模板表单不会在Django中呈现

时间:2018-01-12 16:18:40

标签: python django

我有一张我想要展示的表格 它看起来像这样:

# The template to be filled with the form:
# base.html
{% load staticfiles %}
<html>
    <head><title>{% block title %}{% endblock %}</title></head>
    <body>{% block content %}{% endblock %}</body>
</html>

具体模板

# home.html
{% extends 'base.html' %}

{% block title %}Main{% endblock %}

{% block content %}
  <h2>Home page</h2>
  <form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Login</button>
  </form>
{% endblock %}

views.py

def home(request):
    context = locals()
    template = 'home.html'
    return render(request, template, context)

urls.py

from django.conf.urls import url
from .views import home as home_view

urlpatterns = [
    url(r'^home/$', home_view, name='home'),
]

这不会绘制{{ form.as_p }}。它只绘制提交按钮。
任何想法为什么?

1 个答案:

答案 0 :(得分:1)

您的问题源于这样一个事实:当您使用{{ form }}{{ form.as_p }}时,模板不知道您引用了什么。模板在上下文中看不到与键'form'关联的值。

要解决此问题,请在视图中创建Form对象,然后在调用render时将其包含在上下文中。确保与上下文字典中的表单关联的键为'form'