Python基础(Django二)

本篇内容接上篇Python基础(Django)

六、Form

说明:Django中的From有两种功能,一是将自己显示成HTML,二是校验数据。

个人认为显示成HTML这个功能不太方便,因为显示样式不太好调整,建议只使用Form的校验数据的功能,所以这里对于样式的设置不做介绍,着重介绍校验数据的功能。

Form的使用大概分为三个步骤:

首先定义一个类:类中的每一个字段都是Form的一个属性

然后根据类创建对象并定义校验方法:将创建的对象返回给前端的HTML页面引用,可生成相应的HTML代码。(同时通过调用类的方法可以校验和获取前端用户提交的数据。)

最后在HTML中引用:如果HTML中的标签和样式是自定义的,那么标签的name属性的值必须和Form中的字段名称一致,否则后台将无法获取和进行数据检验。

举例:

1、定义一个类:

文件名:account.py

from django import forms        #导入forms类

class Userinfo(forms.Form):    #新创建的类必须继承forms.Form
   email = forms.EmailField(required=False)    #默认是不允许为空,如果加上required=False参数则表示允许为空
   username = forms.CharField()    #forms有多种字段类型,每种代表不同的校验规则
   password = forms.CharField()

2、根据类创建对象并定义校验方法

文件名:views.py

from django.shortcuts import render,HttpResponseRedirect
from app01 import account as AccountForm    #导入事先定义的类文件

def login(req):    #定义校验方法
    obj = AccountForm.Userinfo(req.POST)    #获取用户提交的数据
    if req.method == ‘POST‘:                #如果用户的请求类型是POST
        error = ‘‘
        if obj.is_valid():            #校验用户提交的数据是否合法
            all_data = obj.clean()    #获取用户提交的数据内容(字典形式)
            if all_data[‘username‘] == ‘test‘ and all_data[‘password‘] == ‘123‘:
                return HttpResponseRedirect(‘/index/‘)    #验证通过则跳转到URL:/index/
        else:
            error = obj.errors    #若数据不合法则获取错误信息
            return render(req,‘account/login.html‘,{‘error‘:error})    #在页面上显示数据校验失败后的提示信息。
        
    # return render(req,‘account/login.html‘,{‘obj‘:obj}) #这种方式表示把创建的对象返回给前端的HTML页面引用,可生成相应的HTML代码。
    return render(req,‘account/login.html‘)    #这种方式表示自定义页面标签及样式,而不使用后台返回的对象来生成HTML代码。

3、在HTML中引用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
    <div style="margin: 20px">
        <form action="/login/" method="post">
            <p>
                <input type="text" class="span3" name="username" placeholder="Username">    <!--自定义的标签 name属性和Form的字段名称一致-->
                <span>{{ error.username }}</span> <!--数据校验失败的错误信息提示,若无错误则无显示-->
            </p>
            <p>
                <input type="password" class="span3" name="password" placeholder="Password">
                <span>{{ error.password }}</span>
            </p>
            <p>
                <input type="text" class="span3" name="email" placeholder="Email">
                <span>{{ error.email }}</span>
            </p>            
            <input type="submit" value="submit">
        </form>
    </div>
</body>
</html>

七、Model(待续)

时间: 2024-10-09 23:21:50

Python基础(Django二)的相关文章

Python基础(二)

Python基础(二) Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典.set集合) for 循环 enumrate range和xrange 编码与进制转换 Python 运算符 1.算术运算: 2.比较运算: 3.赋值运算: 4.逻辑运算:  5.成员运算: 基本数据类型 1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483

Python之路【第三篇】:Python基础(二)

Python之路[第三篇]:Python基础(二) 内置函数 一 详细见python文档,猛击这里 文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 1 文件句柄 = file('文件路径', '模式') 注:python中打开文件有两种方式,即:open(...) 和  file(...) ,本质上前者在内部会调用后者来进行文件操作,推荐使用 open. 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作.

Python基础之二:数据类型

四.Python数据类型 数字 字符串 列表 元祖 字典 1.数字类型 整型 表示范围:-2147483648到2147483647,超过该范围的会被当作长整型 示例:num=123 type(num)-返回<type 'int'>,用来测试变量的类型 长整型 表示范围:任意大整数,后跟L或l与整型区别 示例:num=1l type(num)-返回<type 'long'> 浮点型 示例:num=12.0 type(num) -返回<type'float'> 复数型 示

Python 基础语法(二)

Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) -------------------------------------------- 2. 元组 tuple和list十分相似,但是tuple是不可变的,即不能修改tuple,元组通过圆括号中用逗号分割的项定义:支持索引和切片操作:可以使用 in 查看一个元素是否在tuple中.空元组():只含有一个元素的元组("a",) #需要加

Python 基础【二】 上

一.python语言分类 1. C python   c语言的python版本 官方推荐 使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上. 2. Jython  java python Python语言的Java实现,不仅提供Python的库,同时也提供所有的Java类.能运行在任何可兼容的Java1.1或更高的Java虚拟机平台上. 3.IronPython Python的C#实现,IronPython将Py

Python基础入门 (二)

在上次课程中简要的讲述了Python的基础常识,现在来详细的学习一下吧! 一.类和对象 面向过程和面向对象 面向过程:C 面向对象:Java.Python等 类和对象的含义: 类,是对事物的抽象,比如:车 对象,是类的一个实例,比如:别克 类和对象的关系: 类是对象的定义,而实例是真正的事物,它存放了类中所定义的对象的具体信息: 对象的创建,也就是类的实例化. 对于Python,一切事物都是对象,对象基于类的创建. 具体实例讲解 右边的两个对象是基于左边的字符串类创建的,而两个字符串同时具有了字

第二章 python基础(二)

第九节 函数 函数就是完成特定功能的一个语句组,这组语句可以作为一个单位使用,并且给它取一个名字. 可以通过函数名在程序的不同地方多次执行(这通常叫做函数调用),却不需要在所有地方都重复编写这些语句. 自定义函数 用户自己编写的 预定义的Python函数 系统自带的一些函数,还有一些和第三方编写的函数,如其他程序员编写的一些函数,对于这些现成的函数用户可以直接拿来使用. 为什么使用函数 降低编程的难度 通常将一个复杂的大问题分解成一系列更简单的小问题,然后将小问题继续划分成更小的问题,当问题细化

python基础(二)基础数据类型

一,引子. 1 什么是数据? x=10,10是我们要存储的数据 2 为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3 数据类型 数字 字符串 列表 元组 字典 集合 二基础数据类型. 2.1数字int. 数字主要是用于计算用的,使用方法并不是很多,就记住一种就可以: #bit_length() 当十进制用二进制表示时,最少使用的位数 v = 11 data = v.bit_length() print(data) 2.2布尔值bool. 布尔值就两种:T

Python基础(二)变量、流程控制

一,变量 声明变量:name="Henry"   ##变量名为:name ,变量name的值为"Henry" 变量的作用:昵称,其代指内存里某个地址中保存的内容. 变量的定义规则: 变量名只能是字母.数字或下划线的任意组合. 变量名的第一个字符不能是数字. 特殊关键字不能声明为变量名(例如:'and','list','not','for','while'.........) 为了更清楚的搞清变量在内存中的位置,下面举个例子进行说明: 1 >>> x

python 全栈 python基础 (二十一)logging日志模块 json序列化 正则表达式(re)

一.日志模块 两种配置方式:1.config函数 2.logger #1.config函数 不能输出到屏幕 #2.logger对象 (获取别人的信息,需要两个数据流:文件流和屏幕流需要将数据从两个数据流中接收) 1.函数式简单配置 import logging logging.debug('debug message') logging.info('info message') logging.warning('warning message') logging.error('error mes