#python #html #django #django-views #django-forms
#python #HTML #django #django-просмотры #django-forms
Вопрос:
Я создал модель с именем Annoucement в моем models.py файл, а также форма для него в моем forms.py досье. Затем я создал для него простое представление create в моем my views.py и сделал его отображаемым на интерфейсе, используя пакет django-crispy-forms, но каждый раз, когда я загружаю веб-сайт, граница поля становится красной, показывая, что произошла ошибка. Я попытался проверить, в чем может быть ошибка, но мне не повезло.
models.py
class Announcement_by_dean(models.Model):
student_id = models.ManyToManyField(add_students_by_manager)
message = models.TextField()
sent_date = models.DateField(default=datetime.now(), blank=True)
updated_date = models.DateField(auto_now=True, blank=True)
def __str__(self):
return "message sent on " str(self.sent_date)
forms.py
class Annoucement_form(ModelForm):
class Meta:
model = Announcement_by_dean
fields = ['student_id', 'message']
views.py
def dean_page(request):
annoucement_list = Announcement_by_dean.objects.all()
if request.method == 'POST':
form = Annoucement_form(request.POST)
if form.is_valid():
form.save()
messages.success(request, _("Message Sent Successfully!!!"))
return redirect('dean_page')
else:
messages.error(request, _("Message Not Sent, Something is Wrong!!!"))
else:
form = Annoucement_form()
messages.error(request, _("Invalid Method!!!"))
context = {"form":form, "annoucement_list":annoucement_list}
return render(request, "dean_page.html", context)
dean_page.html
<!-- Send Announcement -->
<div class="tab-pane fade show" id="nav-announcement" role="tabpanel" aria-labelledby="nav-announcement-tab">
<div class="container mt-4 p-3">
<form action="{% url 'dean_page' %}" method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{form|crispy}}
<button type="submit" class="btn btn-success btn-sm">Submit</button>
</form>
</div>
</div>
Комментарии:
1. установите
blank=True
в вашем текстовом поле, чтобы оно могло принимать пустые входные данные.2. Я пробовал это, но это не кажется слишком эффективным, потому что форма может отправлять пустые значения в базу данных, что не является тем, что требуется.
3. Я разобрался с проблемой, проверьте ответ
Ответ №1:
Я смог решить проблему, я понял, что проблема заключалась в отступе моего контекста и возврате рендеринга.
views.py
def dean_page(request):
annoucement_list = Announcement_by_dean.objects.all().order_by('-id')
if request.method == 'POST':
form = Annoucement_form(request.POST)
if form.is_valid():
form.save()
messages.success(request, _("Message Sent Successfully!!!"))
return redirect('dean_page')
else:
messages.error(request, _("Message Not Sent, Something is Wrong!!!"))
else:
form = Annoucement_form()
context = {"annoucement_list":annoucement_list, "form":form}
return render(request, "dean_page.html", context)
to
def dean_page(request):
annoucement_list = Announcement_by_dean.objects.all().order_by('-id')
if request.method == 'POST':
form = Annoucement_form(request.POST)
if form.is_valid():
form.save()
messages.success(request, _("Message Sent Successfully!!!"))
return redirect('dean_page')
else:
messages.error(request, _("Message Not Sent, Something is Wrong!!!"))
else:
form = Annoucement_form()
context = {"annoucement_list":annoucement_list, "form":form}
return render(request, "dean_page.html", context)