簡體   English   中英

我創建了一個 django ModelForm,它沒有出現在我的 html 模板中,我想確定為什么該代碼沒有呈現我的表單?

[英]I have created a django ModelForm that is not showing up in my html template, I am trying to determine why that code is not rendering my form?

模型.py

from django.db import models


# Create your models here.
class Subscriber(models.Model):
    """A subscriber Model"""
    email = models.CharField(max_length=255, blank=False, null=False, help_text="Subscriber Email Address", unique=True)
    full_name = models.CharField(max_length=100, blank=False, null=False, help_text="First and Last Name")

    class Meta:
        verbose_name = "Subscriber"
        verbose_name_plural = "Subscribers"

forms.py

from django.forms import ModelForm
from .models import Subscriber


class SubscriberForm(ModelForm):
    class Meta:
        model = Subscriber
        fields = ["email", "full_name"]

視圖.py

from django.shortcuts import render
from .forms import SubscriberForm
from django.http import HttpResponseRedirect
from django.contrib import messages


# Create your views here.

def subscriber(request):
    if request.method == "POST":
        subscriber_form = SubscriberForm(request.POST or None)
        if subscriber_form.is_valid():
            subscriber_form.save()
            messages.success(request, "")
            return HttpResponseRedirect("/")
    else:
        subscriber_form = SubscriberForm()
    context = {
        "form_subscriber": subscriber_form
    }
    return render(request, "subscriber/subscriber_form.html", context)

subscriber_form.html

{% block content %}
    <div>
        <form method="POST">
            {% csrf_token %}
            {{ subscriber_form.as_ul }}
            <input type="submit" value="Submit">
        </form>
    </div>
{% endblock %}

只有我的提交按鈕正在發布,但該表格從未出現在我面前。 我完全遵循了 django 文檔,但仍然沒有得到任何好的結果。

它應該是form_subscriber而不是subscriber_form所以:

{% block content %}
    <div>
        <form method="POST">
            {% csrf_token %}
            {{ form_subscriber.as_ul }}
            <input type="submit" value="Submit">
        </form>
    </div>
{% endblock %}

此外,我建議您僅在視圖中使用SubscriberForm(request.POST)而不要將None用於GET請求,因為它已經在else條件下處理,因此:

意見.py:

def subscriber(request):
    if request.method == "POST":
        subscriber_form = SubscriberForm(request.POST)
        ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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