在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.pyfrom 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>
这样就基本实现了用户登录的功能,那么我们可以在这篇文章的基础上进行用户的添加删除修改操作。
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!