Django 表单不可见

Django form not visible

只有按钮可见,标题可见,看不到CharField

forms.py

from django import forms

class NameForm(forms.Form):
    your_name = forms.CharField(label='Your name', max_length=100)

views.py

from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render
from compare.forms import NameForm

def get_name(request):
   if request.method == 'POST':
      form = NameForm(request.POST)
   if form.is_valid():
      return HttpResponseRedirect('/thanks/')

   else:
      form = NameForm()

   return render(request, 'name.html', {'form': form})

index.htm

    <form action="/your-name/" method="post">
        {% csrf_token %}
        {{ form }}
    <input type="submit" value="Submit" />
    </form>

你应该给 if form.is_valid() 部分,多一个标签。

from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render
from compare.forms import NameForm

def get_name(request):
   if request.method == 'POST':
      form = NameForm(request.POST)
      if form.is_valid():
          return HttpResponseRedirect('/thanks/')

   else:
      form = NameForm()

   return render(request, 'name.html', {'form': form})

我还不能对你的问题添加评论,但你确实注意到,当你提供代码时,你的视图呈现 name.html index.htm.

基本上您的代码似乎有效,但还可以进一步优化:

def get_name(request):
    form = NameForm(request.POST or None)

    if form.is_valid():
        return HttpResponseRedirect('/thanks/')

    return render(request, 'name.html', {'form': form})
 <form action="/your-name/" method="post">
            {% csrf_token %}
            {{ form.as_p }}
        <input type="submit" value="Submit" />
        </form>

这应该可以通过添加编辑来实现 {{form.as_p}}