[英]Django form are not showing in html template
我正在嘗試在 Django 模板中創建一個表單,但它只是不顯示字段
這是我的文件
models.py我在其中創建了所需的表
class ReportMessage(models.Model):
sender = models.ForeignKey(UserModel, related_name="report_message_sender", on_delete='CASCADE')
message = models.ForeignKey(Message, on_delete='CASCADE')
created_at = models.DateTimeField(auto_now=True)
reason = models.TextField(max_length=1500)
is_read = models.BooleanField(default=False)
forms.py我在其中創建表單以僅編輯表中的一個字段
class ReportMessageForm(forms.Form):
class Meta:
model = ReportMessage
fields = ['reason', ]
views.py我在其中創建了表單的視圖
@login_required
def report_message(request, pk):
current_user = request.user
reported_message = get_object_or_404(Message, pk=pk)
if request.method == "POST":
report_message_form = ReportMessageForm(request.POST)
if report_message_form.is_valid():
model_instance = report_message_form.save(commit=False)
model_instance.sender = current_user
model_instance.message = reported_message
model_instance.save()
return redirect('report_confirm')
else:
report_message_form = ReportMessageForm()
context = {
'report_message_form': report_message_form,
}
return render(request, 'fostania_web_app/report_message.html', context)
def report_confirm(request):
return render(request, 'fostania_web_app/report_confirm.html')
和urls.py我用於視圖的 url
path('report/messages/<int:pk>/', views.report_message, name="report_message"),
path('report/confirm', views.report_confirm, name="report_confirm"),
最后這就是我在html模板中使用表單的方式
{% extends 'fostania_web_app/base.html' %}
{% block content %}
{% load static %}
<form action="" method="post" name="ReportMessageForm" align="right">
{% csrf_token %}
{{ report_message_form }}
<input type="submit" class="btn btn-success" style="width: 100px;" value="إرسال" />
</form>
{% endblock %}
然后我在 html 頁面中看到的只是提交按鈕,沒有表單標簽或輸入或任何內容。
我認為您的問題出在模型表單中,因為您使用的是Forms.Form,並且需要使用Forms.ModelForm
class ReportMessageForm(forms.ModelForm):
class Meta:
model = ReportMessage
fields = ['reason', ]
如果您不使用ModelForm,則在forms.py中必須顯式聲明表單的字段
reason = forms.Charfield()
或者,您可以使用從您指定的模型繼承的ModelForm。
使用ModelForm時應在Meta類中指定模型。還可以從Meta類的字段列表中的Model中指定必填字段
Class myform(forms.ModelForm)
Class Meta:
model = your_model_name
fields= [reason,]
干杯:)
def report_confirm(request):
return render(request, 'fostania_web_app/report_confirm.html', context) #add the context
您需要傳入“上下文”,以便它顯示在模板中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.