Django web开发之Form组件

Form组件使用

参照文档 https://docs.djangoproject.com/zh-hans/2.2/topics/forms/

生成HTML标签

创建一个form类

from django import forms

class RegForm(forms.Form):
    name = forms.CharField(max_length=6, label=‘用户名‘)
    pwd = forms.CharField(label=‘密码‘, min_length=8, widget=forms.widgets.PasswordInput(attrs={‘class‘:‘pwd‘}))
    # widget 插件,默认为select,这里修改为密码用的插件
    """
    Django内置插件:
    参照:https://docs.djangoproject.com/zh-hans/3.0/ref/forms/widgets/
    TextInput(Input)
	NumberInput(TextInput)
	EmailInput(TextInput)
	URLInput(TextInput)
	PasswordInput(TextInput)
	HiddenInput(TextInput)
	Textarea(Widget)
	DateInput(DateTimeBaseInput)
	DateTimeInput(DateTimeBaseInput)
	TimeInput(DateTimeBaseInput)
	CheckboxInput
	Select
	NullBooleanSelect
	SelectMultiple
	RadioSelect
	CheckboxSelectMultiple
	FileInput
	ClearableFileInput
	MultipleHiddenInput
	SplitDateTimeWidget
	SplitHiddenDateTimeWidget
	SelectDateWidget
    """

    """
    """

views

def reg(request):
    form_ojb = RegForm()
    return render(request, ‘reg.html‘, {‘form_obj‘:form_ojb})

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册页面</title>
</head>
<body>
<h1>注册</h1>
<div>
    <form action="/reg" novalidate>
        {% csrf_token %}
        <p> {{ form_obj.name.label }}{{ form_obj.name }} </p>
        <p> {{ form_obj.pwd.label }} {{ form_obj.pwd}} <p>
        <input type="submit" value="注册">
    </form>
</div>

</body>
</html>

浏览器显示

查看下源码

<div>
    <form action="/reg2" novalidate>
        <input type="hidden" name="csrfmiddlewaretoken" value="dXc93xMHJX15g3L3NaazqN9WYEobMwFFWICodZQdHMEXK4E3GVAqQpleAqZBIZF2">
        <p> 用户名<input type="text" name="name" maxlength="6" required id="id_name"> </p>
        <p> 密码 <input type="password" name="pwd" class="pwd" minlength="8" required id="id_pwd">  <p>
        <input type="submit" value="注册">

    </form>
</div>

验证用户数据(显示错误信息)

修改form类

from django import forms

class RegForm(forms.Form):
    name = forms.CharField(max_length=20, label=‘用户名‘)
    pwd = forms.CharField(label=‘密码‘, max_length=16, min_length=8,
                           widget=forms.widgets.PasswordInput(attrs={‘class‘:‘pwd‘}),
                           error_messages={‘min_length‘:"密码太短了",
                                           "max_length":‘密码超过最大限制‘})
                            # error_messages 用来自定义错误消息,如果不设置,采用默认的错误消息。

	"""
	Django 内置字段类型:
	***参照文档 :https://docs.djangoproject.com/zh-hans/3.0/ref/forms/fields/***

views

	def reg(request):
		form_obj = RegForm()
	    if request.method == "POST":
	        form_obj = RegForm(request.POST)
	        if form_obj.is_valid(): # 校验数据,如果成功则进行下一步
	            if form_obj.is_valid():
	            	values = form_obj.clean()
	            	# form_obj.clean() 取得保存所有数据的字典,也可以使用form_obj.cleaned_data
	            	print(values) # 这里可进行数据处理,保存到数据库中
	        	else:
	           	 errors = form_obj.errors
	            	print(errors)
	    return render(request, ‘reg2.html‘, {‘form_obj‘:form_obj})

修改函数reg,使得在页面打开时,初始化页面内容

	def reg(request):
		if request.method == "GET":
			values = {‘name‘:"张三", ‘pwd‘:None}
			form_obj = RegForm(values)
	    else request.method == "POST":
	        form_obj = RegForm(request.POST)
	        if form_obj.is_valid(): # 校验数据,如果成功则进行下一步
	            if form_obj.is_valid():
	            	values = form_obj.clean()
	            	# form_obj.clean() 取得保存所有数据的字典,也可以使用form_obj.cleaned_data
	            	print(values) # 这里可进行数据处理,保存到数据库中
	        	else:
	           	 errors = form_obj.errors
	            	print(errors)
	    return render(request, ‘reg2.html‘, {‘form_obj‘:form_obj})

原文地址:https://www.cnblogs.com/luckyleaf/p/12690376.html

时间: 2024-10-31 16:07:22

Django web开发之Form组件的相关文章

Django Web开发之model操作

model操作 model常用操作对应的就是数据库中的增删改查 参照文档https://docs.djangoproject.com/zh-hans/2.2/topics/db/models/ 示例文件 from django.db import models class Students(models.Model): """学生表""" username = models.CharField(max_length=64, null=False,

Web开发之RSET API

REST介绍 如果要说什么是REST的话,那最好先从Web(万维网)说起. 什么是Web呢?读者可以查看维基百科的词条(http://zh.wikipedia.org/zh-cn/Web),具体的我就不多说了.总之,Web是我们在互联网上最常用的服务,甚至在某些人的心中,互联网就是Web.当然,Web只是互联网的一部分而已,只是大家用的最多而已,我们访问的所有网站都是基于Web. 那么,Web和REST之间究竟有什么关系呢?我们接下来将聊聊组成Web的几大基础技术,URI(统一资源标识符,用来标

[Java Web] 3\WEB开发之HTML基础程序试手

1.初试: 1 <html> 2 <body> 3 <h1>My First Heading</h1> 4 <p>My first paragraph.</p> 5 </body> 6 </html> 2.标题: HTML 标题(Heading)是通过 <h1> - <h6> 等标签进行定义的.显然由大标题变为小标题.... 1 <html> 2 <body> 3

【Go web开发之revel+mgo】第11章 部署到heroku上

演示地址  http://gblog-revel.herokuapp.com/ 1.申请mongohq 关于如何在注册heroku和mongohq帐号,我在之前的blog里面有说明,http://blog.csdn.net/joveth/article/details/19999535 这里简单的说一下,还记得我们的models/dao.go文件里的NewDao方法中被注释的那一行吗? session, err := mgo.Dial("mongodb://omind:[email protec

HTML5+JS手机web开发之jQuery Mobile初涉

一.起始之语 我一直都是在PC上折腾网页的,这会儿怎么风向周边捣鼓起手机网页开发呢?原因是公司原先使用Java开发的产品,耗了不少人力财力,但是最后的效果却不怎么好.因为,Android系统一套东西,iPhone又是新的一套,折腾死人呐. 于是总监发狠,让我把手上的活都交出去,专心折腾web版的,看看最后效果如何. 加上我觊觎手机上的开发学习很久了,于是,一拍即合,搞起了手机开发方面的学习. 分享是很好的提高自身学习的方法.因为分享过程中梳理了所学,往往会有些意想不到的心得与收获.如此利人利已的

Android安全开发之Provider组件安全

Android安全开发之Provider组件安全 作者:伊樵.呆狐@阿里聚安全 1 Content Provider组件简介 Content Provider组件是Android应用的重要组件之一,管理对数据的访问,主要用于不同的应用程序之间实现数据共享的功能.Content Provider的数据源不止包括SQLite数据库,还可以是文件数据.通过将数据储存层和应用层分离,Content Provider为各种数据源提供了一个通用的接口. 创建一个自己的Content Provider需要继承

Django框架基础之Form组件

服务端假设所有用户提交的数据都是不可信任的,所以Django框架内置了form组件来验证用户提交的信息 form组件的2大功能:       1 验证(显示错误信息)       2 保留用户上次输入的信息                  -- 可以生成html标签应用: class A_Form(Form): 字段=fields.字段类型(默认参数: required=True, widget=widgets.插件(attrs={})) 常用字段:Charfield,RegexField,I

Django【十三】form组件。

一.form组件 form组件的功能: 检验功能 前端生成HTML页面 还能保留输入的内容 form组件的用法: from django import forms # Create your views here. # 定义一个类 class Myform(forms.Form): title = forms.CharField( # 通过from表单进行验证的时候,验证输入title字段的数据,参数用于验证 max_length=20, min_length=2, ) # CharField/

7月2日 Django注册页面的form组件

forms.py里注册页面的form组件 # Create your views here. class RegForm(forms.Form): username = forms.CharField( min_length=3, label="用户名", help_text='', error_messages={ "required": "不能为空", "invalid": "格式错误", "