我有一张我想要展示的表格
它看起来像这样:
# 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 }}
。它只绘制提交按钮。
任何想法为什么?
答案 0 :(得分:1)
您的问题源于这样一个事实:当您使用{{ form }}
或{{ form.as_p }}
时,模板不知道您引用了什么。模板在上下文中看不到与键'form'
关联的值。
要解决此问题,请在视图中创建Form
对象,然后在调用render
时将其包含在上下文中。确保与上下文字典中的表单关联的键为'form'
。