上节的常用字段,和参数,这节看看这些参数的具体使用
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ form.xxoo.label }}
{{ form.xxoo.id_for_label }}
{{ form.xxoo.label_tag }}
{{ form.xxoo.errors }}
<p>{{ form.user }} {{ form.user.errors }}</p>
<input type="submit" />
</form>
eg:这里可以在Get的时候,把form表单实例化后,在html里面来使用,obj=LoginForm(),然后上面的{{ obj.xxoo.label }}
里面的xxoo代表的是form里面的字段,如上节的username,
如果按照上面的一个一个的写,去生成html标签,很麻烦,,下面可以通过as_p来生成
通过这个,会自动把后台的各种参数自动生成一个html标签,默认是input,修改可以通过widget,需要通过forms导入widgets
保留上次的内容,
其实上面的这些生成html标签,是这个保留上次内容的一部分功能。
第一种方法通过form表达的方式
在用户get的时候,就把用户的form表单实例化,并且传到前端
def testform(request):
if request.method == "GET":
obj = TestForm()
return render(request,'testform.html',{'obj':obj})
当post提交后,再次通过obj验证的时候,form表达式有数据的,再次返回前端的时候obj里面是有数据的了
else:
obj = TestForm(request.POST)
if obj.is_valid():
print(obj.cleaned_data)
else:
print(obj.errors)
return render(request,'testform.html',{'obj':obj})#此时这个obj里面是有上次提交的数据的
如果后台通过form表达的方式来获取的数据,前端应该这么写了
<form action="/testform/" method="post">
{% csrf_token %}
<p> {{ obj.t1 }} {{ obj.errors.t1.0 }}</p>
<p> {{ obj.t2 }} {{ obj.errors.t2.0 }}</p>
<input type="submit" value="提交">
</form>
功能
转载于:https://blog.51cto.com/sgk2011/2083442