HTML看不到Django表单(Django表单不呈现/显示)

时间:2018-11-23 09:08:02

标签: python html django forms view

我在Django中创建了简单表单。我尝试以多种不同的方式检查所有可能性,但我的HTML代码仍然看不到这种形式。代码如下:

forms.py

xs:any

views.py

from django import forms


class TimeTable(forms.Form):

    title = forms.CharField(max_length=100, required=True)
    time_start = forms.DateTimeField()
    time_end = forms.DateTimeField()

urls.py

from home.forms import TimeTable
from django.shortcuts import render


def schedule(request):
    if request.method == 'POST':
        form = TimeTable(request.POST)
        if form.is_valid():
            pass
    else:
        form = TimeTable()
    return render(request, "registration/schedule.html", {'schedule_form': form})

schedule.html

from django.contrib import admin
from django.urls import path, include
from django.views.generic.base import TemplateView


urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/', include('django.contrib.auth.urls')),
    path('', TemplateView.as_view(template_name='home.html'), name='home'),
    path('accounts/login/', TemplateView.as_view(template_name='registration/login.html'), name='login'),
    path('schedule/', TemplateView.as_view(template_name='registration/schedule.html'), name='schedule'),
]

HTML仅看到缺少此{% block calendar %} <div class="calendar_create"> <form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">Submit</button> </form> {% endblock %} </div> 标记剩余。我尝试通过许多教程,django文档来做到这一点,而所有这些东西对我都不起作用。我在做什么错了?

1 个答案:

答案 0 :(得分:1)

您永远不会调用schedule视图。您的“ schedule /” urlpattern使用内联的TemplateView直接呈现模板。根本不会调用创建表单并将其添加到上下文的视图。

您需要改为使用网址格式的视图:

from myapp import views
...

path('schedule/', views.schedule, name='schedule'),

还有另一个问题:您的视图将表单发送为schedule_form,但是模板引用了form。您需要在两个地方使用相同的名称:

{{ schedule_form.as_p }}