Python基础(Django二)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(待续)

本文出自 “一行菜鸟上青天” 博客,请务必保留此出处http://rmeos.blog.51cto.com/761575/1754546

以上是关于Python基础(Django二)的主要内容,如果未能解决你的问题,请参考以下文章

Python之路58-Django安装配置及一些基础知识点

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

django基础二

Django 基础二

Python自动化开发 - Django基础