我已经开始学习django,但我无法理解如何渲染表单。
这是我发过的form.py。
from django import forms
class TweetForm(forms.Form):
text = forms.CharField(widget = forms.Textarea(attrs = {'rows' : 1, 'cols' : 85}), max_length = 160)
country = forms.CharField(widget = forms.HiddenInput())
这是views.py。
中的代码段from .forms import TweetForm
class Profile(View):
def get(self, request, username):
params = dict()
user = User.objects.get(username = username)
tweets = Tweet.objects.filter(user = user)
params["user"] = user
params["tweets"] = tweets
form = TweetForm
return render(request, 'profile.html', {'params' : params, 'form' : form})
这是html文件,它必须呈现我已经制作的形式。
{% extends "base.html" %}
{% block content %}
<div class="row clearfix">
<div class="col-md-12 column">
<form method="post" action="post/">
{% csrf_token %}
<div class="col-md-8 col-md-offset-2 fieldWrapper">
{{ form.text.errors }}
{{ form.text }}
</div>
{{ form.country.as_hidden }}
<div>
<input type="submit" value="post">
</div>
</form>
</div>
<h3> </h3>
<div class="col-md-12 column">
{% for tweet in tweets %}
<div class="well">
<span>{{ tweet.text }}</span>
</div>
{% endfor %}
</div>
</div>
{% endblock %}
当我发出命令(运行服务器)时,浏览器不会在没有任何异常的情况下呈现表单。 我认为views.py文件中存在问题,但我找不到它。 如何将表单参数发送到模板(.html文件)并在结果中呈现表单?
答案 0 :(得分:2)
您没有实例化表单。 您需要实例化表单,以便在模板中呈现,如此,
form = TweetForm()
注意:
params
变量已经是一个dict(),您可以将表单添加到这样的参数中,
params['form'] = form
然后,使用上下文渲染模板,
render(request, 'profile.html', params)