Python 如何使用Django ModelForm向数据库提交数据?

Python 如何使用Django ModelForm向数据库提交数据?,python,django,Python,Django,我正在学习一些Django,现在我在表单方面遇到了困难。我想做的是创建一个表单,让人们在页面上留言,并显示在同一页面上(就像博客评论系统一样)。我按照文档创建了一个类和如下的模型表单 class Recado(models.Model): recado = models.TextField() data = models.DateTimeField(auto_now_add=True) nome = models.CharField(max_length=100)

我正在学习一些Django,现在我在表单方面遇到了困难。我想做的是创建一个表单,让人们在页面上留言,并显示在同一页面上(就像博客评论系统一样)。我按照文档创建了一个类和如下的模型表单

class Recado(models.Model):
    recado = models.TextField()
    data = models.DateTimeField(auto_now_add=True)
    nome = models.CharField(max_length=100)
    email = models.EmailField(max_length=100)

    def __unicode__(self):
        return self.recado

class RecadoForm(ModelForm):
    class Meta:
        model = Recado
        exclude = ('data',)
那么我的观点是:

def index(request):
    RecadoForm = modelform_factory(Recado, exclude=('data'))
    form = RecadoForm()
    lista_recados = Recado.objects.order_by('-data')
    template = loader.get_template('recados/index.html')
    context = Context({'lista_recados': lista_recados,})
    return render_to_response("recados/index.html", { "form": form,}, context_instance=RequestContext(request))
以及模板:

<div class="conteudo-site conteudo-recados">
    <form method="post" action="salvar_recado">
        {% csrf_token %}            
        {{ form.as_p }}
        <br /><input class="button" type="submit" value="Deixar Recado" />
    </form>
    {% if lista_recados %}
        {% for recado in lista_recados %}
            <p>{{ recado.nome }}</p>
            <p>{{ recado.data }}</p>
            <p>{{ recado.recado }}</p>
            <br />
        {% endfor %}
    {% else %}
        <p>Ainda não existem recados. Deixe o seu :)</p>
    {% endif %}
</div>

{%csrf_令牌%}
{{form.as_p}}

{%if lista_recados%} {lista_recados%中recado的百分比} {{recado.nome}}

{{recado.data}

{{recado.recado}


{%endfor%} {%else%} 安达·não existem recados。Deixe o seu:)

{%endif%}
这会在页面上正确生成表单,但当我单击submit按钮时,它不会将数据保存到数据库中,现在我不知道该做什么。尝试了一些有观点的东西,但没有任何效果


有人能帮我吗?非常感谢。

您需要在视图中添加POST条件,验证表单,然后保存它:
如果您正在使用Django 1.5,请尝试

也许你的观点是:

class RecadoFormView(FormView):
    model_class = RecadoForm
    template_name = 'recados/index.html'

    def valid_form(self, form):
        form.instance.save() # Or form.save()
        return super(RecadoFormView, self).valid_form(form)

你读过基础教程了吗?这也会很有帮助,无需使用modelform_factory-只需导入您的RecadForm并使用它。我确实阅读了文档,但我试图将应该处理post数据的代码放在另一个视图中(不知道为什么这样做)