使用Django显示表单输入

时间:2014-05-21 03:07:37

标签: python django forms

所以基本上我想制作一个简单的表格,我可以输入文字,然后点击提交后,看到文字。

这是我的forms.py:

class Search(forms.Form):
        search = forms.CharField()  

这是我的views.py:

def search(request):
    context = RequestContext(request) 

    if request.method == 'POST':
        search = Search(data=request.POST)

        if search.is_valid():
             ticker = search.save()
             ticker.save()
             success = True

        else:
             print search.errors
    else:
        search = Search()       

    return render_to_response('ui/search.html', {"search":search},  context)   

以下是您用来输入的html表单(我使用bootstrap进行样式设置):

 <form class="navbar-form navbar-right" role="search" action="/search/" method="post" name="tick">
              {% csrf_token %}
                <div class="form-group">
                  <input type="text" class="form-control" placeholder="Enter stock symbol">
                </div>
                <button type="submit" class="btn btn-primary">Submit</button>
   </form>

最后,我希望表单中输入的文字显示在&#34; search.html&#34;目前看起来像这样:

{% extends 'ui/base.html' %}

{% block title %} search {% endblock %}

{% block body_block %}
<br>
<p>test</p>
{{ form.search.data }} <!--I'm pretty sure this is not correct -->
{% endblock %}     

任何人都知道如何做到这一点?感谢。

2 个答案:

答案 0 :(得分:0)

您的模板错误,正如您所怀疑的那样。

它正在寻找一个名为“form”的上下文变量,但您已经为它提供了一个带有名为“search”的键的上下文字典。

此外,“data”是用于构建Search对象(正确)的参数,但是当您想要从中提取用户的输入时,您应该使用字段名称,而不是需要在它们上面调用value()才能获得绑定值。因此,要获取名为search的文本字段的内容,您应该使用search.search.value

尝试更改行

{{ form.search.data }}

{{ search.search.value }}

答案 1 :(得分:0)

您的表单名称为search

要使用现代django呈现值,您需要调用字段的value方法,因此您的模板应如下所示:

{{ search.search.value }}