django模板添加旧表单数据

时间:2013-12-09 22:21:22

标签: django forms validation templates

我正在制作表单,但是当数据无效时,它会在再次加载页面时清空该字段,我该如何解决? 我的观点:

def create_country(request):

    if request.POST:
        country_form = CountryForm(request.POST)
        if country_form.is_valid():
            country_form.save()
            return HttpResponseRedirect(reverse('country'))

        else:
            return render(request, 'create_country.html', {'country_form': country_form})

    country_form = CountryForm()
    return render(request, 'create_country.html', {'country_form': country_form})

我的模板:

<div>
    <center>
        <h2>Create a new country</h2>
    </center>
    <form action="{% url 'create_country' %}" method="post">{% csrf_token %}
        <table>
            <tr>
                <b>{{ country_form.non_field_errors }}</b>
            </tr>
            <tr>
                <b>{{ country_form.name.errors }}</b>
            </tr>
            <tr>
                <td><label for="id_name">Name:</label></td>
                <td><input id="id_name" type="text" name="name" size= "25" maxlength="127" /></td>
            </tr>
            <tr>
                <b>{{ country_form.flavor.errors }}</b>
            </tr>
            <tr>
                <td><label for="id_flavor">Flavor Text:</label></td>
                <td><textarea style="width: 300px; height: 200px;" id="id_flavor" type="text" name="flavor" maxlength="511"></textarea></td>
            </tr>
            <tr>
                <td></td>
                <td style="float: right;"><input type="submit" value="add country" /></td>
            </tr>
        </table>
    </form>
</div>

如何在帖子添加回表单之后添加我之前放入的旧数据,因为它返回为无效?

1 个答案:

答案 0 :(得分:1)

如果{{ form }} {{ form.as_ul }}或{{1}}无法按照您想要的方式呈现,那么请仔细阅读basic form layouts上的文档。使用它,您应该能够使用CSS以您想要的方式呈现表单。您可以在表单字段中指定 customizing the form template以设置所需的任何属性。

尽量避免在模板中手动渲染表单输入。这是重复的,并增加了犯错的可能性。