我正在尝试使用Django表单和模板将变量发送到html。
这是我的代码......
class AdminView(TemplateView):
template_name = 'admin.html'
def admin(self, request):
template = 'admin.html'
data = Quiz.objects.all()
form = AdminForm(request.POST)
context = {"form": form}
context['admin'] = data
# return render(request, template, context)
return render_to_response(context)
这段代码有什么问题?怎么变量没有出现在网站上。
行上下文= {“form”,form}在我的IDE中被高亮显示为错误。
错误:此字典创建可以重写为字典文字。
这看起来如何?
class AdminView(TemplateView):
template_name = 'admin.html'
def post(self, request):
template = 'admin.html'
data = Quiz.objects.all()
form = AdminForm(request.POST)
context = {"form": form}
context['admin'] = data
return render(request, template, context)
遗憾的是仍然不起作用?
这是html代码......
{% if request.user.is_authenticated%}
{% if request.user.username == "teacher" %}
<!DOCTYPE html>
<html lang="en">
<head>
{% load staticfiles %}
<meta charset="UTF-8">
<title>Admin</title>
<link rel="stylesheet" type="text/css" href="{% static 'style.css' %}" />
</head>
<body>
{% include 'navbar.html' %}
Admin Test
{{ admin }}
</body>
</html>
{% endif %}
答案 0 :(得分:0)
这只是一个风格问题,与实际问题无关。
您的代码存在一些实际问题。首先,您不能只定义像admin
这样的任意方法,并期望它被调用。您需要在此处定义get
或post
。
第二个是render_to_response
需要给出模板名称。您使用render
注释掉的版本是正确的。
答案 1 :(得分:0)
注意标识,如果要向模板发送额外的上下文,可以使用get_context_data()
方法,如下所示:
class AdminView(TemplateView):
template_name = 'admin.html'
'''
This is for a GET request
'''
def get_context_data(self, **kwargs):
context = super(AdminView, self).get_context_data(**kwargs)
context['admin'] = Quiz.objects.all()
context['form'] = AdminForm()
return context
'''
This is for a POST request
'''
def post(self, request, *args, **kwargs):
form = AdminForm(request.POST)
if form.is_valid():
# do something if form data is valid
else:
# do something if form data is not valid
return render(request, 'admin.html', context)
但如果你想要一个表格,我建议你使用FormView
而不是TemplateView