Django 中一个登陆的小案例

简介:登录小案例

寄语:本篇文章目的在于简单的使用Django框架,提供一些登录的思考方式,不在于直接拿去运行,其中主要是veiws文件中的login函数,是重点:登录的逻辑,数据库中怎么取出数据。同时并没有加入网络,很是不足,只适合自己玩,目前能力有限希望海涵。

页面:两个简单的html页面,分别是login页面和main页面。login页面主要是一个表单,main页面一句话,显示某个用户登录成功

功能:从数据库获得用户的username,password,与用户输入的对比:
(1)判断数据中是否存在该用户;
(2)判断密码是否正确;
(3)账户密码正确,跳转页面

大体模样:
在这里插入图片描述

详细设计(主要代码):

login页面:

<body>


<form action="/app01/login/" method="post">
    {% csrf_token %}	{# 注意没有回报错 #}
    <p>
       用户: <input type="text" name="username">
    </p>
    <p>
       密码: <input type="text" name="password">
    </p>
    <p>
        <input type="submit" value="登录">
    </p>

</form>

<span>{{   err_str }}</span>

</body>

main页面:

<body>

恭喜{{ username }} <br>{#显示登录人的名字#}
登录成功

</body>

views文件:

from django.shortcuts import render,HttpResponse,redirect
from app01 import models
# Create your views here.

def login(request):
    # 错误提示语句
    err_str=''
    # 判断,如果是post请求,并且账户密码都对,返回nice
    if request.method=='POST':
        # 获取到用户输入的用户名密码
        user=request.POST.get('username')
        pwd=request.POST.get('password')
        # print(user,pwd)
        #获取数据库中所有的对象
        obj_list=models.User_login.objects.all()
        # 创建一个字典
        dic={}
        # 将对象的name 和password 封装成一个键值对,存到字典
        for i in obj_list:
            dic[i.name]=i.password
        # 判断用户是否存在,不存在返回 “用户不存在”
        if user not in dic:
            err_str='用户不存在'
            return render(request,'app01/login.html',{'err_str':err_str})
        # 如果存在,判断密码是否相等,不等返回 “密码错误”
        elif pwd != dic[user]:
            err_str = '密码错误'
            return render(request, 'app01/login.html', {'err_str': err_str})
        # 密码账户都通过,返回 “OK”
        else:
            return render(request,'app01/main.html',{'username':user})#####################
            # return redirect('/app01/main/')

    print(request.method)
    return  render(request,'app01/login.html')

models文件:

from django.db import models

# Create your models here.
'''
主要目的生成数据表,表中包含id,name,password三个字段
'''
class User_login(models.Model):
    id=models.AutoField(primary_key=True)#id字段,主键自动增长
    name=models.CharField(null=False,max_length=20)#name字段,不能为空,字长20
    password=models.CharField(null=False,max_length=11)#password字段,不能为空,长度11

执行命令
在这里插入图片描述
添加数据:
在这里插入图片描述我们从命令提示符中查看:
在这里插入图片描述

app下的urls文件:

在这里插入图片描述

根下的urls文件:

在这里插入图片描述

主要的东西就是这写了,还有就是一些templates简单配置,和一些很简单的配置,不在写出了。

结果图:

地址栏:
在这里插入图片描述login网页:
在这里插入图片描述
登录失败:
(1)用户不存在
在这里插入图片描述
(2)密码错误
在这里插入图片描述
main网页:
成功:
在这里插入图片描述

扫描二维码关注公众号,回复: 6765188 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_39062888/article/details/89525866