我有一个form.py文件,其中包含表单数据和一些验证,但在我的模板文件中,我使用我的手动html文件,而不是从form.py渲染它,从模板发布数据后,我怎么能当view.py中的数据无效(在form.py中验证)时,将所有数据返回到模板。
抱歉,我的问题不是那么清楚,我的问题是如何在发现错误后将数据渲染回views.py中的手动模板。以下是代码示例:
form.py(我在表单中有很多字段和一些验证)
class Project_f(forms.Form):
slug=forms.CharField(max_length=100)
......
views.py
def post_view(request, *args, **kwargs):
Pr_form=Project_f(request.POST,request.FILES)
if Pr_form.is_valid():
.........
return HttpResponseRedirect('/admin/mpm/project/')
'''when Pr_form is not valid'''
c={'form': Pr_form}
c.update(csrf(request))
return render_to_response('project_form.html',c)
模板
手动模板不使用form.py,所有元素都与form.py中的元素相同,但格式/小部件不同,例如与一些js。
答案 0 :(得分:0)
仅仅因为您没有将表单对象发送到模板,您仍然可以对数据进行验证。无论你提交什么视图,你只需要测试request.POST然后执行旧的myForm = MyForm(data = request.POST),接着是myForm.is_valid()。只需确保您在HTML中创建的表单将其尊重的“name”元素设置为您在表单类中的内容。
class MyForm(forms.Form):
foo = forms.CharField()
bar = forms.CharField()
def myView(request):
if request.POST:
myForm = MyForm(data=request.POST)
if myForm.is_valid():
""" do stuff """
else:
""" do stuff with errors """
else:
""" print a page or somthing """
答案 1 :(得分:0)