#html #django #database
#HTML #django #База данных
Вопрос:
views.py
def contact_us(request):
if request.method == 'POST':
formq = forms.querys(request.POST)
if formq.is_valid():
obj = query()
obj.name = formq.cleaned_data['your_name']
obj.email = formq.cleaned_data['your_email']
obj.message = formq.cleaned_data['your_message']
obj.save()
return redirect(index)
else :
formq = forms.querys()
return render(request, 'home/contact_us.html', {'formq': formq})
models.py
class query(models.Model):
Name = models.CharField(max_length=200)
Email = models.CharField(max_length = 200)
Message = models.CharField(max_length=1500)
def __str__(self):
return self.Name
forms.py
class querys(forms.ModelForm):
class Meta:
model=models.query
fields = ['Name', 'Email','Message']
Пожалуйста, помогите с тем, как я могу добавить запрос в базу данных и просмотреть его на странице администратора.
Ответ №1:
Есть несколько вещей, которые вам нужно увидеть:
- Поскольку вы используете ModelForm, вам не нужно вручную очищать и сохранять данные, как вы это делаете.Вызов
save()
метода выполнит эту работу. - Кроме того, не импортируйте целые формы и модели. Импортируйте то, что необходимо. Не импортируйте весь файл целиком.
- Вы не можете перенаправить на URL-адрес без использования
reverse
. Пожалуйста, посмотрите на это наоборот
Это представление допустимо, если вы используете formq
объект в шаблоне, т.е. {{ formq }}
Если вы создаете пользовательскую HTML-форму, убедитесь, что имя <input>
полей формы совпадает с именем полей формы django.Предполагая views.py и forms.py находятся в одном и том же месте.
views.py
from .forms import querys
from django.urls import reverse
from django.shortcuts import render,redirect
def contact_us(request):
if request.method == 'POST':
formq = querys(request.POST)
if formq.is_valid():
formq.save()
return redirect(reverse(index))
else:
return render(request, 'home/contact_us.html', {'formq': formq})
else:
formq = querys()
return render(request, 'home/contact_us.html', {'formq': formq})
Опять же, предполагая models.py и forms.py находятся в одном и том же месте.
forms.py
from .models import query
class querys(forms.ModelForm):
class Meta:
model=query
fields = ['Name', 'Email','Message']