我是靠谱客的博主 瘦瘦大白,最近开发中收集的这篇文章主要介绍「Django框架」表单基础,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

        • 一、初识表单
        • 二、表单的使用
          • 1.渲染表单
          • 2.数据验证
        • 三、一般的使用流程

一、初识表单

  • 表单模型都继承自forms.FORM

  • Django中的表单本质上也是一个模型,其可用来:
      1. 传递给DTL引擎,渲染出前端中的表单;
      2. 通过表单模型验证所提交的数据是否合法。

当然,没有表单模型也可以提交数据到后台进行交互;但是使用表单模型可以很方便地进行数据的验证。

表单模型与其他的模型不同,表单模型不会生成表,其内的属性只是用来过滤,不会映射到数据库生成字段。

  • 表单模型的字段名需与前端页面中表单组件的name属性值相同,才能正确地进行对应验证。
  • 需在模板的表单元素中添加一个组件,用以传递csrf验证信息。
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}"/>

二、表单的使用

1.渲染表单

 1. 在视图函数中实例化定义好的表单类,将表单对象作为一个参数传递给html页面。
 2. 在html模板中,使用{{ form.as_table }}来渲染表单。

  • 在模板中的表单对象不一样命名为form,该对象名由视图函数传递参数时指定;
  • 需在模板中手动添加<form></fomr>标签,DTL渲染时不会添加;
  • 在模板中渲染出来的表单不含有提交按钮,需要手动添加。
  • 除了as_table外,还有as_pas_ul 等渲染方法;在使用对应渲染方法时需手动添加外层标签,如as_table需添加 table 标签。

 使用这种方法渲染出来的表单可定制性差,故一般手写前端的form表单,再将表单数据提交到后台,使用表单模型进行验证。

2.数据验证

 直接将request对象POST属性中的数据(含有请求中通过post方法提交的数据)传入定义的表单类,生成表单对象;再对该表单对象调用is_vaild()方法进行验证,若成功,则调用表单对象的cleaned_data.get("name")方法提取所需数据,其中name值为前端表单组件指定的name属性值。


三、一般的使用流程

  1. 新建forms.py文件,定义表单模型,其中每个模型均继承自django.forms.Form

实例代码如下:

# forms.py
from django import forms
class MessageBoardForm(forms.Form):
title = forms.CharField(max_length=3,label='标题',min_length=2,error_messages={"min_length":'标题字符段不符合要求!'})
content = forms.CharField(widget=forms.Textarea,label='内容')
email = forms.EmailField(label='邮箱')
reply = forms.BooleanField(required=False,label='回复')

  1. 在视图函数中,根据请求方式进行相应操作。若为GET方法请求当前url,则返回表单页面;若为POST方法请求,则此时为表单提交,则将提交上来的数据进行处理。
# views.py
class IndexView(View):
def get(self,request):
form = MessageBoardForm()
return render(request,'index.html',{'form':form})
def post(self,request):
form = MessageBoardForm(request.POST)
if form.is_valid():
title = form.cleaned_data.get('title')
content = form.cleaned_data.get('content')
email = form.cleaned_data.get('email')
reply = form.cleaned_data.get('reply')
return HttpResponse('success')
else:
print(form.errors)
return HttpResponse('fail')

  1. 定义模板,对视图函数传过来的表单对象进行渲染。
<form action="" method="post">
<table>
{{ form.as_table }}
<tr>
<td></td>
<td><input type="submit" value="提交"></td>
</tr>
</table>
</form>

最后

以上就是瘦瘦大白为你收集整理的「Django框架」表单基础的全部内容,希望文章能够帮你解决「Django框架」表单基础所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部