簡體   English   中英

Django 表格未顯示在 html 模板中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM