0
連絡先フォームの入力からデータを取り込むときに、save()をDjango SQLite DBメソッドに正しく実装する方法は?最後のメソッドは入力を保存しようとしますが、それは機能しません。 Djangoの連絡フォームで電子メールを送信するチュートリアルのコードを使用しました。データベース機能に保存を追加する必要があります。連絡先フォームからDjango SQLite DBにsave()入力データメソッドを正しく実装する方法は?
図
from django.core.mail import send_mail, BadHeaderError
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render, redirect
from .forms import ContactForm
from .models import SendEmail
def email(request):
if request.method == 'GET':
form = ContactForm()
else:
form = ContactForm(request.POST)
if form.is_valid():
subject = form.cleaned_data['subject']
from_email = form.cleaned_data['from_email']
message = form.cleaned_data['message']
try:
send_mail(
subject, message, from_email,
['[email protected]']
)
return redirect('success')
except BadHeaderError:
return HttpResponse('Invalid header found.')
return render(request, "email.html", {'form': form})
def success(request):
return HttpResponse('All right! Thank you for your message.')
def savedata(request): # want to save data input into the SQLIte database!! here is something wrong
if request.method == 'GET':
form = ContactForm()
else:
form = ContactForm(request.POST)
if form.is_valid():
subject = form.cleaned_data['subject']
from_email = form.cleaned_data['from_email']
message = form.cleaned_data['message']
message_object = SendEmail(
from_email=from_email, subject=subject, message=message)
message_object.save()
return HttpResponseRedirect('success') # else: form = ContactForm() # unbound form
return render(request, "email.html", {'form': form})
テンプレート
<h1>Submit identifier for the data processing</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<div class="form-actions">
<button type="submit">Send</button>
</div>
</form>
形態
from django import forms
class ContactForm(forms.Form):
from_email = forms.EmailField(required=True)
subject = forms.CharField(required=True)
message = forms.CharField(widget=forms.Textarea, required=True)
モデル
from django.db import models
class SendEmail(models.Model):
from_email = models.EmailField()
subject = models.TextField()
mesage = models.TextField()
フォームが有効な場合、 'if form.is_valid()'メソッドでviews.pyに 'form.save()'を追加できます – hansTheFranz