zoukankan      html  css  js  c++  java
  • Django之Form

    Form

    settings.py文件中静态文件配置

    STATICFILES_DIRS = [
    	os.path.join(BASE_DIR, 'static')
    ]
    

    html中的form表单,action不写默认往当前路径提交数据,method设置请求方式。

    Django自带的form

    导入

    from django import forms
    
    
    # 定义form
    class RegForm(forms.form):
    	user = forms.CharField(label='用户名', min_length=6)  # 设置label标签的显示内容, min_length为设置的最小长度
    	pwd = forms.CharField(label='密码')
    
    

    使用

    # views.py文件中写函数
    def register(request):
    	form_obj = RegForm()
    	return render(request, 'register.html', {‘form_obj’: form_obj})
    

    如下,自动生成form中自己写的字段的标签

    # register.html文件
    <form action='', method='post'>
    	{% csrf_token %}  # 跨域
    	{{ form_obj.as_p }}  # 生成多个P标签,包含label input框
    	<button>注册</button>
    </form>
    

    自定义标签,其中定义form以及views中的内容都一样。HTML文件不同,如下:

    <form action='', method='post' novalidate>  # novalidate为不进行自带的校验,可以删掉,删掉以后就要进行自带的校验了
    	{% csrf_token %}
    	<p>
    		{{ form_obj.user.label }}  # 生成label标签
    		{{ form_obj.user }}  # 生成某个字段的input框
    		{{ form_obj.user.errors }}  # 指定字段的错误提示信息,可能有多条
    		{{ form_obj.user.errors.0 }}  # 指定字段的错误提示信息的第一条
    	</p>
    	<p>
    		{{ form_obj.pwd }}
    	</p>
    	{{ form_obj.errors }}  # 全局的错误提示
    	<button>注册</button>
    </form>
    
    def register(request):
    	form_obj = RegForm()
    
    	if request.method == 'POST':
    		form_obj = RegForm(request.POST)
    		if form_obj.is_valid():  # is_valid 返回值为布尔值
    			form_obj.clean_date  # 经过校验的数据
    			# 进行数据库的操作
    			return HttpResponse('注册成功')
    
    	return render(request, 'register.html', {‘form_obj’: form_obj})
    

    常用字段与插件

    label = '用户名'  # 设置标签名
    min_length = 6  # 设置最小长度
    initial = 'oooo'  # 设置初始值
    error_messages = {
    	'min_length': '太短',
    	'required': '不能为空'
    }  # 自定义错误提示信息
    
    
    from django.forms import widgets
    
    
    pwd = forms.CharField(
    	label='密码',
    	min_length=6,
    	widget = widgets.PasswordInput()  # 插件 指定字段的类型,比如密码输入框
    )
    
    # 单选
    gender = forms.ChoiceField(
    	choices=((1, '男'), (2, '女'), (3, '其他')),
    	widget = widgets.RadioSelect
    )
    
    # 多选
    hobby = forms.ChoiceField(
    	choices = ((1, '足球'), (2, '篮球'), (3, '乒乓球'), (3, '其他球')),
    	widget = widgets.SelectMultiple
    )
    
    

    校验

  • 相关阅读:
    【Q&A】pytorch中的worker如何工作的
    【教程】opencv-python+yolov3实现目标检测
    ubuntu使用scrcpy手机投屏-免费神器scrcpy【介绍、安装、使用】
    【从踩坑到教程】win10下ubuntu18.04双系统UEFI模式安装、Nvidia驱动安装
    Python引用与目录结构
    交流总结
    转载-趣图展现程序员职业生涯的11个阶段
    转载-在家工作,10招助你效率、生活两不误
    转载-新年寄望:从小做起,活在当下
    转载-成为明星程序员的10个提示
  • 原文地址:https://www.cnblogs.com/ZN-225/p/14569330.html
Copyright © 2011-2022 走看看