1217

1.django实现form表单验证

使用django内置功能实现用户输入信息的验证

新建一个project,比如叫django1217;

新建一个app,python manage.py startapp app01

settings,py,

INSTALLED_APPS = [
    ‘django.contrib.admin‘,
    ‘django.contrib.auth‘,
    ‘django.contrib.contenttypes‘,
    ‘django.contrib.sessions‘,
    ‘django.contrib.messages‘,
    ‘django.contrib.staticfiles‘,
    ‘app01‘,#注册了ap01
]

MIDDLEWARE = [
    ‘django.middleware.security.SecurityMiddleware‘,
    ‘django.contrib.sessions.middleware.SessionMiddleware‘,
    ‘django.middleware.common.CommonMiddleware‘,
    # ‘django.middleware.csrf.CsrfViewMiddleware‘,  #注释这行
    ‘django.contrib.auth.middleware.AuthenticationMiddleware‘,
    ‘django.contrib.messages.middleware.MessageMiddleware‘,
    ‘django.middleware.clickjacking.XFrameOptionsMiddleware‘,
]

#设置静态资源路径
STATIC_URL = ‘/static/‘
STATICFILES_DIRS = (
    os.path.join(BASE_DIR,‘static‘),
)

urls.py,

from app01 import views

urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^login/‘, views.login),
]

app01→views.py,

from django.shortcuts import render

# Create your views here.

from django import forms

#定义各个输入框的规则,比如下面的不允许user和pwd为空
class LoginForm(forms.Form):

#字段的值比如跟html中该标签的name值一样
#比如这里的user对应html里<input type="text" name="user" />中的name值。
    user = forms.CharField(required=True)
    pwd = forms.CharField(required=True)

def login(request):
    if request.method == ‘POST‘:
        # u = request.POST.get(‘user‘)
        # p = request.POST.get(‘pwd‘)
        # print(u,p)
        obj = LoginForm(request.POST)

#如果所有规则都满足,则ret为true,只要有一条不满足,ret就为false。
        ret = obj.is_valid()

#obj.clean()就是获取到的用户输入信息
        if ret:
            print(obj.clean())
        else:

#obj.errors,获取错误信息。
            print(obj.errors)
    return render(request,‘login.html‘)

templates→login.html,

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div>
        <input type="text" name="user" />
    </div>

    <div>
        <input type="password" name="pwd" />
    </div>

    <input type="button" value="login" onclick="OnSubmit()"/>

    <script src="/static/js/jquery-1.12.4.js" ></script>
    <script>

        function OnSubmit(){
            var info_dict = {};
            $(‘input‘).each(function(){

#将name值作为键,value值作为值,加入到字典。
                var v = $(this).val();
                var n = $(this).attr(‘name‘);
                info_dict[n] = v;
            });

            $.ajax({
            url : ‘/login/‘,
            type : ‘POST‘,
            data : info_dict ,
            success:function(data){

            },
            error:function(data){

            }
        })
        }

    </script>
</body>
</html>

如果用户名密码都为空时点登陆,则obj.errors信息见下:

<ul class="errorlist"><li>pwd<ul class="errorlist"><li>This field is required.</li></ul></li><li>user<ul class="errorlist"><li>This field is required.</li></ul></li></ul>
#提示用户名密码都是被要求的

如果用户名为空,密码不为空时点登陆,则obj.errors信息见下:

<ul class="errorlist"><li>user<ul class="errorlist"><li>This field is required.</li></ul></li></ul>
#提示用户名是被要求的

如果都不为空,则obj.clean()信息见下:

{‘pwd‘: ‘123‘, ‘user‘: ‘123‘}
#都不为空,也就不报错了,直接获取到用户输入的内容。
时间: 2024-10-14 05:58:27

1217的相关文章

HDOJ 1217 Floyed Template

1 #include <iostream> 2 #include <stdio.h> 3 #include <string.h> 4 #include <cstring> 5 #include<map> 6 using namespace std; 7 8 map<string,int>name; 9 const int INF = 1000000; 10 const int MAXSIZE = 1005; 11 const int

HDU 1217 Arbitrage 【最短路,map+spfa】

Arbitrage Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6985    Accepted Submission(s): 3212 Problem Description Arbitrage is the use of discrepancies in currency exchange rates to transform

ural 1217. Unlucky Tickets

1217. Unlucky Tickets Time limit: 1.0 secondMemory limit: 64 MB Strange people live in Moscow! Each time in the bus, getting a ticket with a 6-digit number, they try to sum up the first half of digits and the last half of digits. If these two sums ar

CSUOJ 1217 奇数个的那个数

Description 给定些数字,这些数中只有一个数出现了奇数次,找出这个数. Input 每组数据第一行n表示数字个数,1 <= n <= 2 ^ 18 且 n % 2 == 1. 接下来n行每行一个32位有符号整数. Output 出现奇数次那个数,每组数据对应一行. Sample Input 5 1 1 2 2 3 7 1 2 1 2 2 3 3 Sample Output 3 2 看了大神的代码 使用位运算o(╯□╰)o 1 # include <stdio.h> 2 i

codevs 1217 借教室

1217 借教室 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define maxn 1000000 4 #define inf 1<<30 5 6 int n,m,tot,num[maxn],q[maxn]; 7 int sta[maxn],d[maxn],end[maxn]; 8 9 bool check(int now) 10 { 11 tot=0; 12 for(int i=1;i<=n;i++) q[i]=

HDU 1217 Arbitrage(Bellman-Ford判断负环+Floyd)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1217 题目大意:问你是否可以通过转换货币从中获利 如下面这组样例: USDollar 0.5 BritishPound BritishPound 10.0 FrenchFranc FrenchFranc 0.21 USDollar 可以通过US->Br->French->US这样转换,把1美元变成1*0.5*10*0.21=1.05美元赚取%5的利润. 解题思路:其实就相当于bellman-

1217: 打印沙漏

From: 合工宣OJ http://xcacm.hfut.edu.cn/problem.php?id=1217 时间限制: 1 Sec  内存限制: 128 MB 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 所谓“沙漏形状”,是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等.给定任意N个符号,不一定能正好组成一个沙漏.要求打印出的沙漏能用掉尽可能多的符号. 输入 输入在一

hdu 1217 Arbitrage (spfa算法)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1217 题目大意:通过货币的转换,来判断是否获利,如果获利则输出Yes,否则输出No. 这里介绍一个STL中的map容器去处理数据,map<string,int>V,M; 现在我目前的理解是将字符串转换成数字,然后就是根据spfa的模板找最短路了..哇哈哈( ⊙o⊙ )哇 1 #include <iostream> 2 #include <cstdio> 3 #include

hdu 1217 (Floyd变形)

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1217 Arbitrage Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4430    Accepted Submission(s): 2013 Problem Description Arbitrage is the use of discr

1217 借教室

1217 借教室 2012年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要 向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自然希望编程解决这个问题. 我们需要处理接下来n天的借教室信息,其中第i天学校有ri个教室可供租借.共有m份 订单,每