form表单提交

FORM组件

天涯浪子 提交于 2020-02-22 05:19:52
form组件 忽略的 一个问题: 没有对用户输入的值进行校验 1:前台和后台都要校验 2:减少后台数据库的压力 views.py: from django.forms import Form from django.forms import fields class LoginForm(Form): #验证的规则 username=fields.CharField( required=True, max_length=18, min_length=6, error_message={ "required":'不能为空', "max_length":'太长了', "min_length":"太短了", }) pwd =fields.CharField() def login(request): if request.method=='GEt': return render(request,'login.html') else: obj =LoginForm(request.POST) print(obj) if obj.is_valid(): print(obj.cleaned_data)##对象 else: print(obj.errors)## 对象__str__ return render(request,'login.html',{'obj':obj}) html:

modelform的简介

不打扰是莪最后的温柔 提交于 2020-02-20 06:13:54
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确。如果用户输入的内容有错误就需要在页面上相应的位置显示对应的错误信息.。 Django form组件就实现了上面所述的功能。 总结一下,其实form组件的主要功能如下: 生成页面可用的HTML标签 对用户提交的数据进行校验 保留上次输入内容 普通方式手写图书管理系统的增加书籍和编辑书籍功能 views.py, def book_list(request): book_list = models.Book.objects.all() return render(request, "book_list.html", {"book_list": book_list})def add_book(request): # 获取前端提交的数据 if request.method == "POST": title = request.POST.get("title") price = request.POST.get("price") publish_date = request.POST.get("publish_date") publisher = request

Django 中 ModelForm 的使用

倾然丶 夕夏残阳落幕 提交于 2020-02-19 13:57:54
定义 ModelForm 定制 ModelForm Meta 在 Form 中另外定义 Field 值得一提的一些 Field 转化 AutoField BooleanField ForeignKey ManyToManyField 初始化 ModelForm 校验 ModelForm 储存 ModelForm 对象 定义一个 Form 来新建、更新实例 什么是 ModelForm Model 在 Django 对应数据库模型 一个 Model 拥有多个 Model.Field Form 在 Django 对应表单 一个 Form 拥有多个 Form.Field ModelForm 即基于 Model 的 Form,把 Model 中的 Field 根据下图中的映射关系自动转化为 Form 中的 Field。 为什么使用 ModelForm 利用 Model 生成 Form,提高 Model 复用性 如何使用 ModelForm 定义 ModelForm 举一个书籍管理例子 # Modelclass Article(models.Model): title = models.CharField(max_length=20, unique=True) author = models.ForeignKey('Author') 这个 Model 中定义了两个字段 title 储存书籍标题

Django中的Form和ModelForm

谁都会走 提交于 2020-02-19 13:54:49
Form 1.models表单定义: from django import forms # 导入表单模块 from django.core.exceptions import ValidationError class RegisterForm(forms.Form): # 自定义表单类,并继承forms.Form email = forms.EmailField(widget=forms.EmailInput( attrs={"class": "form-control"})) username = forms.CharField(min_length=4, max_length=12, widget=forms.TextInput( attrs={"class": "form-control"})) password = forms.CharField(min_length=6, widget=forms.PasswordInput( attrs={"class": "form-control"})) password2 = forms.CharField(min_length=6, widget=forms.PasswordInput( attrs={"class": "form-control"})) valid_code = forms.CharField(widget

HTML常见元素和HTML语义化

三世轮回 提交于 2020-02-19 10:39:58
HTM常见元素和理解 常见元素 header区 meta title style link script base 页面相关资源等, 页面上不直接显示 body区 div/section/article/aside/header/footer p span/em/strong 表格: table/thead/tbody/tr/td 列表: ul/ol/li/dl/dt/dd 链接: a form/input/select/textarea/button 以上是有代表性的 < meta charset = "utf-8" > 使用的字符集, 一般utf8 < meta name = "viewport" content = "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=n0" > 视口, 手机\电脑屏 , 适配移动端 < base href = "/" > 指定基础路径 HTM重要属性 a [ href , target ] img [ src , alt ] //alt显示替换内容 table td [ colspan , rowspan ] //colspan, rowspan合并单元格 form [ target , method , enctype ] /

利用iframe来做无刷新上传

谁说胖子不能爱 提交于 2020-02-18 18:48:17
  要实现文件上传,form必须设置几个属性:   1.action:设为要处理数据的页面地址;   2.method:设为"post";   3.enctype/encoding:必须设为"multipart/form-data",这里要注意的是在ie中用js修改form的enctype属性是没有效果的,只能修改encoding;   iframe实现无刷新上传的原理:利用form的target属性,把数据提交到页面中一个(通常为隐藏的)iframe上。直观点说就是把“刷新”留给iframe。   其实原理跟一般用iframe实现无刷新提交 表单 是一样的,只是这里换成是文件。   这里关键就是把form的target设为iframe的name <iframe style="display:none" name="test1"></iframe> <form action="/Upload.php" target="test1" method="post" enctype="multipart/form-data"> <div class="img_box m_t_6"> <div class="text_file ele_btn ele_file" > 上传照片 <input name="UploadFile" type="file" onchange="javascript

Enctype与文件上传

江枫思渺然 提交于 2020-02-18 18:47:35
  enctype到底是个啥?   答:多用途网际邮件扩充协议,在脚本的用法是form.encoding=XXX!表单里面enctype 属性的默认值是“application/x-www-form-urlencoded”,但当向服务器传送大量文本、包含非ASCII字符或二进制数的数据时,这个默认类型就不能胜任了。这时,文件上载提交表单时应使用“multipart/form-data”内容类型。表单直接提交到电子邮箱时候中文字会编码成"%XX%YYPZZ..."这种怪码!这时就可以用text/plain,使中文字不被编码,更容易看!   用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型。   application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。   multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分,上传附件用到   text/plain: 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。   enctype="multipart/form-data是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data

html->form表单

穿精又带淫゛_ 提交于 2020-02-18 18:47:17
在form元素的语法中,enctype表明提交数据的编码格式,用 enctype 属性指定将数据回发到服务器时浏览器使用的编码类型。 下边是说明: 1、application/x-www-form-urlencoded:窗体数据被编码为名称/值对。这是标准的编码格式。 2、multipart/form-data:窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。 3、text/plain:窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。 表单中 enctype="multipart/form-data"的意思,是设置表单的MIME编码。在默认的情况下,这个编码格式是application/x- www-form-urlencoded,不能用于文件上传; 在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。Browser端<form>表单的enctype属性值为multipart/form-data,它告诉我们传输的数据要用到多媒体传输协议,由于多媒体传输的都是大量的数据,所以规定上传文件必须是post方法,<input>的type属性必须是file。 只有使用了multipart/form-data,才能完整的传递文件数据. 来源: https://www.cnblogs.com/zzj2

Django Form组件

冷暖自知 提交于 2020-02-16 18:09:02
一、form组件功能 form 组件的主要功能如下: 生成页面可用的HTML标签 对用户提交的数据进行校验 form表单提交时,数据出现错误,返回的页面中仍可以保留之前输入的数据 二、使用form组件实现登录校验 views.py from django.shortcuts import render from django.shortcuts import HttpResponse from django import forms class LoginForm(forms.Form): username = forms.CharField( label="账号", min_length=2, max_length=16, required=True, error_messages={ "min_length": "用户名最少2位", "max_length": "用户名不能超过16位", "required": "请输入用户名", "invalid": "格式错误" } ) password = forms.CharField( label="密码", min_length=6, required=True, error_messages={ "min_length": "密码最少6位", "required": "请输入密码", } ) def login(request):

form 组件

天大地大妈咪最大 提交于 2020-02-16 18:04:07
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确。如果用户输入的内容有错误就需要在页面上相应的位置显示对应的错误信息.。 Django form组件就实现了上面所述的功能。 总结一下,其实form组件的主要功能如下: 生成页面可用的HTML标签 对用户提交的数据进行校验 保留上次输入内容 回到顶部 普通方式手写注册功能 views.py # 注册 def register(request): error_msg = "" if request.method == "POST": username = request.POST.get("name") pwd = request.POST.get("pwd") # 对注册信息做校验 if len(username) < 6: # 用户长度小于6位 error_msg = "用户名长度不能小于6位" else: # 将用户名和密码存到数据库 return HttpResponse("注册成功") return render(request, "register.html", {"error_msg": error_msg}) login.html <