Django框架基于ORM实现用户登录

鳄鱼君

发表文章数:642

Vieu四代商业主题

高扩展、安全、稳定、响应式布局多功能模板。

¥69 现在购买
首页 » Python » Django框架基于ORM实现用户登录

Django框架实现用户登录页面这篇文章我们简单的实现了用户登录,但呢是后没有数据库操作,完全没有什么卵用,在这篇文章鳄鱼君将介绍一下基于ORM来实现用户登录操作。

这里首先进行准备工作,login.html模板需要带form表单,用于提交数据,login函数用户处理POST请求提交的数据跟数据库进行对比,配置模板文件和静态文件路径,添加URL的路由规则:http://127.0.0.1:8000/myapp1/login/(鳄鱼君还是在myapp1下演示),自行解决。

首先用户访问http://127.0.0.1:8000/myapp1/login/进行登录,登录后台拿到数据和数据库中的数据进行对比,如果username和password相同视为成功,登录成功跳转到http://127.0.0.1:8000/myapp1/index/页面,该页面会显示用户管理和用户组(暂不实现),点击用户管理会进入http://127.0.0.1:8000/myapp1/user_info/页面,显示用户列表信息,每一个可以进入http://127.0.0.1:8000/myapp1/userdetail-2/页面查看详细信息。由于新建的模板页面比较多,涉及CSS样式的问题,你可能需要补充一些知识。需要建立index.html、login.html、user_info、user_group(暂不实现)、user_detail.html,页面可以共用静态文件CSS,这里不进行详细介绍。

APP下的urls.py

from django.urls import path,re_path
from myapp1 import views
urlpatterns=[
    path('login/',views.login), #用户登录页 http://127.0.0.1:8000/myapp1/login/
    path('index/',views.index), #用户登录跳转页 http://127.0.0.1:8000/myapp1/index/
    path('user_info/',views.user_info), #用户信息页面 http://127.0.0.1:8000/myapp1/user_info/
    path('user_group/',views.user_group), #用户组页面 http://127.0.0.1:8000/myapp1/user_group/
    re_path(r'^userdetail-(?P<pid>\d+)/',views.user_detail), #用户详情页 http://127.0.0.1:8000/myapp1/detail-(\d+)/
]
from django.shortcuts import render,redirect
from myapp1 import models
def index(request):
    return render(request,'index.html')
def login(request):
   if request.method=='GET':
       return render(request,'login.html') #GET请求返回登录页面
   elif request.method=='POST': 
        user=request.POST.get('user') #获取用户提交的user
        pwd=request.POST.get('pwd')
        # obj=models.UserInfo.objects.filter(username=user,password=pwd) #核对数据库中是否存在
        # #不存在则没有数据  <QuerySet []> 相当于空列表
        # print(obj)
        #obj = models.UserInfo.objects.filter(username=user, password=pwd).count()  # 根据个数判断
        obj = models.UserInfo.objects.filter(username=user, password=pwd).first()
        #print(obj)  #不存在则None
        error = ""
        if obj: #obj is not None  密码正确的时候重定向到后台
            return redirect('/myapp1/index/')  #后台页面
        else: #不正确还是在当前页面
            error = "用户名或者密码错误"
            return render(request,'login.html',{'error':error})  #用户登录错误提示
   else:  #其他方式重定向到鳄鱼教程官网
       return redirect('https://www.e1yu.com')
def user_info(request):
    user_list=models.UserInfo.objects.all() #QuerySet类型 [obj,obj,...]
    #print(user_list.query) #查看当前的语句
    return render(request,'user_info.html',{'user_list':user_list})
def user_group(request): #暂不做操作
    return render(request,'user_group.html')
def user_detail(request,pid): #取到路径中的pid
    #获取当前id 的所有信息
    obj=models.UserInfo.objects.filter(id=pid).first()#取一条数据
    #models.UserInfo.objects.get(id=pid) #获取一条数据,如果id不存在报错,不建议使用
    return render(request,'user_detail.html',{'obj':obj}) #传递到用户详情页

然后是对应的模板页面,鳄鱼君对于CSS样式不是很熟练,所以这里只介绍body标签的内容,CSS样式自行修改。index.html

<div class="heaedr-menu" style="height: 48px;background-color: aliceblue;color: red">
    <h1 align="center">欢迎回来!</h1>
</div>
<div class="left-menu" style="position: absolute;top: 48px;bottom: 0;left: 0;width: 200px;background-color: #191616;">
    <ul>
        <li><a href="/myapp1/user_info/" ><strong>用户管理</strong></a></li>
        <li><a href="/myapp1/user_group/" ><strong>用户组管理</strong></a></li>
    </ul>
</div>

user_info.html

<div class="heaedr-menu" style="height: 48px;background-color: aliceblue;color: red">
    <h1 align="center">欢迎回来!</h1>

</div>
<div class="left-menu" style="position: absolute;top: 48px;bottom: 0;left: 0;width: 200px;background-color: #191616;">
    <ul>
        <li><a href="/myapp1/user_info/" ><strong>用户管理</strong></a></li>
        <li><a href="/myapp1/user_group/" ><strong>用户组管理</strong></a></li>
    </ul>
</div>
<div class="content" style="position: absolute;top: 48px;left: 210px;bottom: 0;right: 0;overflow: auto;">
    <h3>用户列表</h3>
    <ul>
        {% for user in user_list %}
        <li><a href="/myapp1/userdetail-{{ user.id }}">{{ user.username }}</a></li>
        {% endfor %}
    </ul>
</div>

user_detail.html

<div class="heaedr-menu" style="height: 48px;background-color: aliceblue;color: red">
    <h1 align="center">欢迎回来!</h1>
</div>
<div class="left-menu" style="position: absolute;top: 48px;bottom: 0;left: 0;width: 200px;background-color: #191616;">
    <ul>
        <li><a href="/myapp1/user_info/" ><strong>用户管理</strong></a></li>
        <li><a href="/myapp1/user_group/" ><strong>用户组管理</strong></a></li>
    </ul>
</div>
<div class="content" style="position: absolute;top: 48px;left: 210px;bottom: 0;right: 0;overflow: auto;">
    <h3>用户详细信息</h3>
    <strong>{{ obj.username }}</strong>
    <strong>{{ obj.password }}</strong>
</div>

这样就基本实现了用户登录的功能,那么我们可以在这篇文章的基础上进行用户的添加删除修改操作

未经允许不得转载:作者:鳄鱼君, 转载或复制请以 超链接形式 并注明出处 鳄鱼君
原文地址:《Django框架基于ORM实现用户登录》 发布于2020-04-13

分享到:
赞(0) 赏杯咖啡

评论 抢沙发

6 + 2 =


文章对你有帮助可赏作者一杯咖啡

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.6主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册