Django form.py没有更新

时间:2017-01-27 01:03:34

标签: python django django-models django-1.8

我一直在经历Django forms 'tutorial'。一旦我阅读完本教程,我就会尝试修改它以满足我的需求并自定义它以学习Django的形式。我发现每当我修改表单时,网站都不会更新。我认为我的代码有错误,但我找不到它。

# views.py
def contact(request):
    # if this is a POST request we need to process the form data
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = ContactForm(request.POST)
        # check whether it's valid:
        if form.is_valid():
            # process the data in form.cleaned_data as required
            # ...
            # redirect to a new URL:
            return HttpResponseRedirect('/message_recived/')

# forms.py
from django import forms
class ContactForm(forms.Form):
    name = forms.CharField(label='Name', max_length=100)
    email = forms.EmailField(label='Email', max_length=100)
    message = forms.CharField(label='Message', max_length=500)


# models.py
from django.db import models
class Contact(models.Model):
    name = models.CharField(max_length=100)
    email = models.CharField(max_length=100)
    message = models.CharField(max_length=500)

这是contact.html模板:

#contact.html
{% extends "BlogHome/headerAndFooter.html" %}
{% block content %}
<script>
document.title = "Pike Dzurny - Contact"
</script>
<form action="/message_recived/" method="post">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Submit" />
</form>
{% endblock %}

我做错了什么吗?我尝试使用新的浏览器清除我的浏览器缓存,并且显然要刷新它。

1 个答案:

答案 0 :(得分:1)

您的视图中似乎忘记了render回复。 您还需要将表单包含在上下文中以正确呈现模板。

尝试更改视图,如下所示:

def contact(request):
    # if this is a POST request we need to process the form data
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = ContactForm(request.POST)
        # check whether it's valid:
        if form.is_valid():
            # process the data in form.cleaned_data as required
            # ...
            # redirect to a new URL:
            return HttpResponseRedirect('/message_recived/')
    else:
        form = ContactForm()       
    return render(request, 'contact.html', {'form': form})