在Django中,表单不会在浏览器上呈现

时间:2017-05-18 13:42:34

标签: python django

我已经开始学习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>&nbsp;</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文件)并在结果中呈现表单?

1 个答案:

答案 0 :(得分:2)

您没有实例化表单。 您需要实例化表单,以便在模板中呈现,如此,

form = TweetForm()

注意:

params变量已经是一个dict(),您可以将表单添加到这样的参数中,

params['form'] = form

然后,使用上下文渲染模板,

render(request, 'profile.html', params)