Django自学笔记 6-2 表单(Form)基础操作

django form表单登录注册案例 1-登录注册实现思路 1-创建模型类-------从而映射生成数据表 2-创建登录模板以及注册模板 3-创建视图函数 4-配置路由 总之就是先将架构打好 然后一步一步实现功能 1-登录注册第一步–创建模型生成数据表 1-在注册的APP下面的models.py里面创建模型 from django.db import models # Create your models here. clas... 阅读详情

————总目录——前言——框架版本————

======================= 大爽歌作,made by big shuang =======================

二、表单(Form)基础操作

1 - 编写表单类

创建新的表单类的代码,一般写到一个专门的forms.py文件中(一般放在对应的app文件夹下)

在本章第一小节,我们已经展示了如何去创建表单类的代码,这里我们详细看看这些代码

#usr/bin/env python
#-*- coding:utf-8- -*-
from django import forms

class LoginForm(forms.Form):
    uid = forms.CharField(label='ID', max_length=10)
    password = forms.CharField(label='password', max_length=30, widget=forms.PasswordInput)

首先第1行从django库中导入了forms库,
我们创建表单时,常常需要用到forms中的:

  • forms.Form: 必用,继承该表单类去创建自己需要的表单
  • 各种Field: 几乎必用,定义自己表单类中需要的字段
  • 各种widget: 常用,定义表单字段的一些规则。

第3行继承forms.Form编写自己的表单类LoginForm。
新表单类的命名一般以Form结尾,没有什么太多的要求,按常规的命名类的规则来就行,表达清楚该表单的功能和意义即可。

第4、5行设置表单需要的字段,其中的Field和之前models中的Field十分相似,写法上也差不多。
使用时主要的区别有:

  • 标签文本,forms中的Field用label指定,models中的Field用verbose_name指定,
  • forms中的Field比models中的Field多了个widget属性

这里第5行中的widget属性forms.PasswordInput代表这是个密码字段,填写时会隐藏其输入的内容

2 - 操作表单

新建表单对象,即实例化表单:

form = LoginForm()

这是一个没有数据的空表单,用户提交表单信息的页面,一般使用的是这样的空表单。
通过render方法传递给模板进行渲染,比如本章第一节中的代码:

return render(request, 'login.html', {'form': form})

当用户填写表单信息之后,提交表单时,必须使用POST方法提交,
此时视图中,可以直接使用表单数据来新建一个表单对象,代码如下

form = LoginForm(data=request.POST)

不过用户提交的表单信息不一定就是符合规则的,这个时候需要对表单进行一个数据检查
form.is_valid()
使用表单类的is_valid方法即可,返回值为True则代表其数据是通过验证的。

通过验证后,我们将可以使用表单类的cleaned_data属性,找到所有已验证的表单数据。
而表单类的cleaned_data属性,是一个字典,获取其中的属性,就是很简单的了:
uid = form.cleaned_data["uid"]

3 - 渲染表单

视图方法给Django Template(模板)中传入一个form对象后,想要在模板中渲染出来,
可以直接使用{{ form }},该语法将适当地渲染form对象的

除了<label>/<input>对,还有其他的输出选项:

  • {{ form.as_table }}将把它渲染成包含在<tr>标签中的表格单元格
  • {{ form.as_p }}将把它们包装在<p>标签中
  • {{ form.as_ul }}将把它们包装在<li>标签中

注意:表单的渲染输出不包括周围的<form>、<table>或者<ul>标记,也不包括表单的submit控件,这些需要我们去写。

补充:其实直接使用{{ form }}和使用{{ form.as_table }}是一样的,前者是通过默认调用后者实现的。

这里我们举个例子,具体展示下这三个输出方法的区别
使用本章第一节中展示的代码,临时性的修改下其中的login.html如下,来观察下这几种渲染方式的不同

<html>
<head>
    <title>login</title>
</head>
<body>
    <h1>Use form.as_table </h1>
    <form method="post" action="{% url "login" %}">
        {% csrf_token %}
        <table>
        {{ form.as_table }}
        </table>
        <p><input type="submit" value="Log in" /></p>
    </form>

    <h1>Use form.as_p</h1>
    <form method="post" action="{% url "login" %}">
        {% csrf_token %}
        {{ form.as_p }}
        <p><input type="submit" value="Log in" /></p>
    </form>

    <h1>Use form.as_ul</h1>
    <form method="post" action="{% url "login" %}">
        {% csrf_token %}
        <ul>
        {{ form.as_ul }}
        </ul>
        <p><input type="submit" value="Log in" /></p>
    </form>

</body>
</html>

其渲染后的效果如下图:
在这里插入图片描述

下面我们细看一下这三种方法渲染后输出的HTML代码
{{ form.as_table }}:

<tr><th><label for="id_id">ID:</label></th><td><input type="text" name="id" maxlength="30" required id="id_id"></td></tr>
<tr><th><label for="id_password">Password:</label></th><td><input type="password" name="password" maxlength="30" required id="id_password"></td></tr>

{{ form.as_p }}:

<p><label for="id_id">ID:</label> <input type="text" name="id" maxlength="30" required id="id_id"></p>
<p><label for="id_password">Password:</label> <input type="password" name="password" maxlength="30" required id="id_password"></p>

{{ form.as_ul }}:

<li><label for="id_id">ID:</label> <input type="text" name="id" maxlength="30" required id="id_id"></li>
<li><label for="id_password">Password:</label> <input type="password" name="password" maxlength="30" required id="id_password"></li>
论文阅读—Square Attack: a query-efficient black-box adversarial attack via random search 论文阅读—Square Attack: a query-efficient black-box adversarial attack via random search 发表位置 ECCV 2020 摘要 作者提出了一种基于得分的黑盒Square attack,该模型不依赖于模型的局部梯度信息,因此可以绕过梯度隐藏防御攻击。Square Attack是一种随机搜索方法,它在随机位置选择局部的方形更新,使得每次迭代时扰动近似位于可行集的边界。 背景 当涉及到对安全至关重要的机器学习应用时,对抗性的例子尤其值得 阅读详情

相关推荐

从轻量化到高精度:3DXML 转 STP 的工程数据升级技术指南

本文详细解析了3DXML转STP格式的工程数据升级技术,对比了两种格式在轻量化和高精度方面的特性差异,并提供了CATIA、FreeCAD及Python编程等多种专业级转换方案。通过实际案例展示了如何确保转换过程中的数据精度,适用于CAD设计、精密制造等场景,帮助工程师实现工程数据的高效升级。

weixin_29201859的博客 215

form.as_p

form.as_p {{form.as_p}}#这是一个模板变量 Django 自动创建显示表单所需要的全部字段 修饰符as_p让Django以字段格式渲染所有的表单元素,这是一种整洁的显示表单的简单方式 ...

我是张先生 4377

鸿蒙读书笔记1:《鸿蒙操作系统设计原理与架构》

GUI、 语 音 控 制 方 式 的 VUI(Voice User Interface, 语 音 用 户 界。电话、多媒体、DFX、MSDP(Multimodal Sensor Data Platform,多。面)、手势/姿态控制的CVUI(Computer Vision User Interface,计算。KAL(Kernel Abstract Layer,内核抽象层)通过屏蔽多内核差异,JavaScript、C、C++等多语言的用户程序开发框架,以及UI框架、

jackyrongvip的专栏 2449

django form 用法

form的主要作用:1.在html中生成表单框架,2.验证数据(实话实说,很简洁,但不实用,灵活性差) 1.首先,建好一个工程 django-admin.py startproject myblog , 再创建个model python manage.py startapp User, 在model里创建一些数据类型 class Users(mode

无形的专栏 1360

SoC验证新思路:除了UVM仿真,你还可以试试Cadence JasperGold的形式化验证

本文深入探讨了Cadence JasperGold形式化验证在SoC设计中的创新应用,对比传统UVM仿真验证,详细解析了其数学穷尽性验证优势。通过实战案例展示了JasperGold在总线协议、时钟域交叉等关键场景的验证方法,并提供了混合验证流程设计与效能优化方案,帮助工程师提升验证效率30%以上。

weixin_30566063的博客 120

SOC-ATF 安全启动BL2流程分析(2)

Bl2的启动流程与bl1类似,主要区别是bl2的初始化流程比bl1更简单,但其可能需要加载更多的镜像,如bl31、bl32和bl33。由于bl2可以运行于el3或s-el1,它们的入口函数和处理流程都有所区别,为了简化分析我们选取比较常见的s-el1方式,以下为其总体执行流程:上图仅供参考,实际看一下代码结构:上面截图展示了 链接汇编文件,bl2_el3.ld.S 是指bl2 运行于el3;bl2.ld.S 是实现bl2运行于s-el1 .

z20230508的博客 1388

Django--6 Form类的使用,实现用户登录验证

一般前端html页面中,通过form表单提交数据,后台接收数据,进行处理。对这些数据处理,后台比较麻烦。不但要判断数据格式是否正确,例如是否是邮箱;而且经常要进行数据转换,因为提交的数据是字符串的,后台需要的数据有些是数字,有些是其他类型。这些表单操作比较繁琐,因此Django设计了一个Form类来描述html表单,帮助或简化操作,form类主要有2个作用: (1)可自动生成html代码,即input标签字段 (2)接收和处理用户提交的数据,可检查提交的数据,可将数据转换成python的...

liuning2008的专栏 837

把 SAP BTP Destination 写进 MTA:一段 com.sap.application.content 配置背后的部署编排学

MTA内容模块解析:SAP BTP中的声明式部署机制 本文详细解析了mta.yaml中com.sap.application.content模块在SAP BTP云环境中的作用。该模块通过声明式配置实现内容投递,无需编译或部署代码。核心功能包括: Destination创建:通过content-target:true标识将配置投递到Destination服务 HTML5应用部署:将静态资源投递到HTML5 Application Repository 安全集成:配置XSUAA服务实现OAuth2用户令牌交换

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 165

django 登录流程实现

8、创建一个新文件夹 middleware 下新建一个auth.py 新建一个类,这是一个中间件,获取用户当前的 url 判断有无 session 信息,有就继续,没有就返回到登录,同时需要将登录页面设置为不需要验证 session 信息就可以访问,这样才能重定向成功到登录页面,否则会出错。4、此处登录使用了验证码验证,验证码利用 python 的第三方库 pillow 生成的一个简单的字母验证。6、用户提交了错误的用户名或者密码或者验证码,需要返回错误信息,此次利用了。查看用户的 sesion。

Drizzlejj的博客 3488

【Claude】媒体文件处理错误:PDF 与 Image 过大的检测与预处理方法 bug报错已解决

图片压缩是必须的:原始图片的 base64 会占用大量 TokenPDF 提取文本优于传图片:文本版 PDF 比扫描版更省 Token分块处理大文件:不要一次性处理整个大文件控制分辨率:800x800 通常足够 Claude 分析。

博客 6360

毕设助力!从0到1构建基于YOLO的家居安防异常活动监测系统,让你的毕设守护家庭安全

做完这个项目,你会发现自己完整走过了“数据采集→标注→模型训练→功能集成→界面开发”的毕设全流程,这不仅是技术能力的证明,更是对“技术守护生活”这一理念的实践。答辩时,你可以重点讲这几点:系统解决了家居安防的哪些痛点、对比了不同YOLO模型的性能差异、系统未来能怎么优化(比如对接智能门锁/报警器、实现语音交互)。未来,这个系统还能往“更智能”的方向发展:比如结合行为分析判断异常意图、开发移动端APP实现全屋设备联动、在智慧社区中实现多家庭联防……想象空间很大。

LXY_LOVE36的博客 122

Django之Form操作

一、Form基础 (一)Form的作用 Django的Form主要有以下几大作用: 生成HTML标签 验证用户数据(显示错误信息) Form提交保留上次提交数据 初始化页面显示数据 (二)实例 一般网站都有登录页面,如果使用Form应该怎么做呢? 1、创建LoginForm类 from django import forms class LoginF...

weixin_30398227的博客 624

这种绑定设备的文件拷贝出来了,怎么放到一台新的P100上使用

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1135

Django-form表单

Widget:用来渲染成HTML元素的工具,如:forms.Textarea对应HTML中的<textarea>标签Field:Form对象中的一个字段,如:EmailField表示email字段,如果这个字段不是有效的email格式,就会产生错误。Form:一系列Field对象的集合,负责验证和显示HTML元素Form Media:用来渲染表单的CSS和JavaScript资源。subject = forms.CharField(max_length=100 ,label='留言标题')

happy_king_zi的博客 2049

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

django2.2-form表单详解

文章目录一、form组件二、form表单的基本语法1. form表单类的书写2. 校验数据3. 渲染表单标签三、展示错误信息1. 展示错误信息2. 自定义错误信息四、钩子函数(HOOK)五、字段参数和类型1. 核心参数`widget`参数`validators`参数其他参数2. 常用类型 一、form组件 通常情况下,我们需要自己手动在HTML页面中,编写form标签和其内的其它元素。但这费时费力,而且容易出错,数据验证也比较麻烦。 因此,Django在内部集成了一个表单模块,专门用来帮助我们快速处理表单相

花城的博客 9577

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Django之Form表单

在Django中有一个验证神器,那就是Form表单,它会自动生成你所需要的表单内容,并自动为你验证是否正确,并可以返回错误的详细信息(前提是你写的详细)。 Django中的Form使用时一般有两种功能: 1、生成html标签 2、验证输入内容 接下来我介绍下Django模板中的表单和form表单的区别、 1. Django模板中的表...

Gscsd的博客 1272

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Django之form表单

Django之form表单 Django的请求 默认页面请求都是get请求 Request是传递到视图的请求,里面包含请求的各种参数: 常用的请求方式: Get:默认是get请求,请求数据以明文形式放在路由上,get的格式是以?开头,键等于值的形式,以&来分割键值对,通常用于和服务器获取资源。 Post:请求数据隐藏发送,安全系数更高。通常用于向服务器提交资源。 Django默认提供了...

零度面北的博客 712

Django中的Form表单

Django-Form表单 继承 django.forms.Form 可以通过 django.forms 定义表单属性 Form 的用途 生成表单页面 (不常用) 验证数据 Form 表单的配置步骤 在 应用下、新建一个 forms.py, 在该模块下,定义当前应用下的 表单类 from django import forms class ResourceCommentForm(forms.Form): # 表单中的属性,要和 提交的属性保持一致 star = forms.I

人生苦短,我用python 2308

Django学习笔记(6)——Form表单

知识储备:HTML表单form学习   表单,在前端页面中属于最常见的一个东西了。基本上网站信息的提交都用到了表单,所以下面来学习Django中优雅的表单系统:Form   表单的主要作用是在网页上提供一个图形用户页面,用作采集和提供用户输入数据。   表单的基本结构: <form></form> 1,from表单常用属性 action :表单提交的服务器地址...

weixin_30237281的博客 1374

django中的form表单和form表单类以及表单检测

目录 form表单 一、get方式 1、编写前端页面 ​ 2、修改视图文件 3、修改路由 4、修改前端代码 5、查看效果 二、POST方式 1、编写前端代码 2、修改视图文件 3、查看效果 form表单类 1、在app当中创建一个forms.py脚本 (1)手动定义 (2)继承 2、修改views文件 3、修改urls文件 4、编写前端 5、查看效果 fo...

李嘉豪的博客 1517

Django的Form表单模块

自己在html页面写form表单, 提交到后端 判断数据,反馈信息,都是自己完成,但是返回时用户填写的内容已经清空,如: 不用Django中form表单模块.html &amp;amp;amp;amp;amp;amp;amp;lt;!DOCTYPE html&amp;amp;amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;lt;html lang=&amp;amp;amp;amp;amp;amp;quot;z

python编程 2332

django form表单渲染和验证

django form表单渲染和验证一、Form常用字段与插件1.initial 初始值,input框里面的初始值。2.error_messages 重写错误信息3.password 设置输入框为密码类型4.radioSelect 单选框,值为字符串5.单选Select6.多选Select7.单选checkbox8.多选checkbox9.date类型10.choice字段注意事项二、Form所有...

筑梦人 2761

[Django] Djaong(八) 表单操作——Form类

概述 在HTML页面中,form表单是通过&lt;form&gt;&lt;/form&gt;标签来定义的,可以将数据提交给服务器,如: &lt;form action="demo/hello" method="get"&gt; First name: &lt;input type="text" name="fname"&gt;&lt;br&amp

FightFightFight的博客 1243

Django 笔记之 Form 表单

Form 表单怎么使用 是什么? 在 HTML 中,form 就是 … 里面的元素,用来和后台交互; 在 Django 中,form是一个丰富的框架,来促进表单的创建和表单数据的操作。 Django 的 Form 主要做了三项工作: 准备和重构数据提供给前端 给这些数据生成 html 表单 接受和处理客户端返回的表单 Django 初始化表单,可以空着也可以预填充: 用模型的实例预填充 其他...

锐博客 466

Django自学笔记 6-3 使用模型(models)创建表单(form)

————总目录——前言——框架版本———— ======================= 大爽歌作,made by big shuang ======================= 三 使用模型(models)创建表单(form) 本文参考:Forms for models 1 - 初步介绍 很多时候,我们使用的表单,是与模型密切关联的(官方文档称之为紧密映射)。 比如注册学生账号,其表单与学生的模型字段基本是一一对应的。 这种情况下,自己一个一个去编辑设置表单的字段比较费事,而且如果模型中有.

大爽老师的博客 1293

Django form表单(状态保持session、form表单及注册实现)

一、状态保持 session   状态保持 #1、http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状态 #2、客户端与服务器端的一次通信,就是一次会话实现状态保持的方式:在客户端或服务器端储存与会话有关的数据 #3、储存方式包括cookie、session,会话一般指session #4、使用cookie,所有数据存储在客户端,注意不要存储敏感数据 #5、是由sess...

平头哥(Adger)的博客 1322
上一篇: Django 小实例S1 简易学生选课管理系统 —— 五、实现注册功能
下一篇: Django自学笔记 6-3 使用模型(models)创建表单(form)
大爽歌
博客等级 码龄9年 422粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值