重置 Django 表单

3

我想知道如何在填写表单时清除(重置)表单?

我可以将表单提交到我的MySQL数据库,我以为重置过程是一样的,但显然不是。我只想补充说我在Django方面真的很困惑,我每天都在学习很多教程。

<!--DOCTYPE html -->
<html>

<body>

<h1 align="center"> Formulaire d'acte de naissance </h1>

<form method='POST' action=''> {% csrf_token %}

<h3> Partie contenant les informations de l'enfant</h3>
{{ Cform.as_ul}} <!-- Display child part formulary -->
{{ value|date:"%d/%m/%Y" }}
{{ value|time:"H:M" }}

<h3> Partie contenant les informations des parents </h3>
{{ Pform.as_ul }} <!-- Display parent part formulary -->
{{ value|date:"%d/%m/%Y" }}

<br></br>

<input type ="submit" value="Valider le formulaire" />
<input type ="reset" value="Reset" />

</form>

</body>
</html>

这是我的views.py文件:

#-*- coding: utf-8 -*-

from django.shortcuts import render
from django.http import HttpResponseRedirect, HttpResponse
from django.template import loader
from .models import Child, Parent
from .forms import ChildForm, ParentForm

# Create your views here.

def BirthCertificateAccueil(request) :
    # Fonction permettant de créer la page d'accueil de la rubrique Acte de Naissance 

    #Cherche le fichier html accueil et le renvois
    template = loader.get_template('accueil.html') 
    return HttpResponse(template.render(request))

def Formulary(request) :
    # Fonction permettant de créer le formulaire Acte de Naissance et le remplissage

        Cform = ChildForm(request.POST or None) 
        Pform = ParentForm(request.POST or None)

        if Cform.is_valid() and Pform.is_valid() :   # Vérification sur la validité des données
            Cform.save()
            Pform.save()

        context = {
            "Cform" : Cform,
            "Pform" : Pform,
           }

        return render(request, 'birthform.html', context)

这是我的 urls.py 文件:

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^accueil$', views.BirthCertificateAccueil),
    url(r'^formulaire$', views.Formulary),
]

这是一种完全错误的方法,还是我错过了什么?

谢谢;)

PS:有没有适合开发者的Stack部分可以帮助我改进我的项目/脚本?因为我独自完成这个项目,作为初学者,这非常困难:/

My localhost BirthCertificate page


你的意思是在创建后呈现一个空表单吗? - ettanany
在创建过程中,我希望重置所有字段,而不是手动清除每个字段。 - Essex
你调用哪个视图来显示你的表单?你能展示一下你的URL吗? - ettanany
@ettanany 我已经编辑了我的帖子,并附上了urls.py文件。 - Essex
我知道这已经过去很久了,但你能解决这个问题吗?我也想在Django中使用标准的HTML <input type="reset" /> 功能。 - Hailee
显示剩余2条评论
2个回答

2
你做错的是将带有一次性post值的表单传递给上下文,你只需要在上下文之前调用表单即可。这样每次保存结果后,它会显示一个空表单。
 if Cform.is_valid() and Pform.is_valid() :   
     Cform.save()
     Pform.save()
 Cform = ChildForm() 
 Pform = ParentForm()   
 context = {
        "Cform" : Cform,
        "Pform" : Pform,
       }

1

在表单提交时,通常使用Post/Redirect/Get。你所缺少的是,在成功验证提交的表单值后进行重定向:

if Cform.is_valid() and Pform.is_valid() :
    Cform.save()
    Pform.save()
    return redirect('/formulaire')  # <- This.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接