失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Django博客系统(登录)

Django博客系统(登录)

时间:2020-03-04 01:23:28

相关推荐

Django博客系统(登录)

1. 登录页面展示

1.在users.views.py文件中定义视图

from django.views import Viewclass LoginView(View):def get(self,request):return render(request,'login.html')

2.在users.urls.py文件中定义路由

from users.views import LoginViewurlpatterns = [# 参数1:路由# 参数2:视图函数# 参数3:路由名,方便通过reverse来获取路由path('login/', LoginView.as_view(),name='login'),]

3.修改login.html中的资源加载方式

<!-- Header部分 -->{% load staticfiles %}<!-- 引入bootstrap的css文件 --><link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.min.css' %}"><!-- 引入vuejs --><script type="text/javascript" src="{% static 'js/vue-2.5.16.js' %}"></script><script type="text/javascript" src="{% static 'js/axios-0.18.0.min.js' %}"></script>...<!-- Footer部分 --><script type="text/javascript" src="{% static 'js/host.js' %}"></script><script type="text/javascript" src="{% static 'js/common.js' %}"></script><script type="text/javascript" src="{% static 'js/login.js' %}"></script>...<!-- 点击注册部分 --><small class="form-text text-muted ml-1">还没有账号?<a href="{% url 'users:register' %}" style="color: cornflowerblue; ">注册新账号</a>

2. 登录接口设计

1.请求方式

2.请求参数:表单

3.响应结果:HTML

3. 登录接口实现

from django.contrib.auth import loginfrom django.contrib.auth import authenticateclass LoginView(View):def post(self,request):# 接受参数mobile = request.POST.get('mobile')password = request.POST.get('password')remember = request.POST.get('remember')# 校验参数# 判断参数是否齐全if not all([mobile, password]):return HttpResponseBadRequest('缺少必传参数')# 判断手机号是否正确if not re.match(r'^1[3-9]\d{9}$', mobile):return HttpResponseBadRequest('请输入正确的手机号')# 判断密码是否是8-20个数字if not re.match(r'^[0-9A-Za-z]{8,20}$', password):return HttpResponseBadRequest('密码最少8位,最长20位')# 认证登录用户# 认证字段已经在User模型中的USERNAME_FIELD = 'mobile'修改user=authenticate(mobile=mobile, password=password)if user is None:return HttpResponseBadRequest('用户名或密码错误')# 实现状态保持login(request, user)# 响应登录结果response = redirect(reverse('home:index'))# 设置状态保持的周期if remember != 'on':# 没有记住用户:浏览器会话结束就过期request.session.set_expiry(0)# 设置cookieresponse.set_cookie('is_login', True)response.set_cookie('username', user.username, max_age=30 * 24 * 3600)else:# 记住用户:None表示两周后过期request.session.set_expiry(None)# 设置cookieresponse.set_cookie('is_login', True, max_age=14*24 * 3600)response.set_cookie('username', user.username, max_age=30 * 24 * 3600)#返回响应return response

注意:

默认的认证方法中是对username进行认证。我们需要修改认证的字段为mobile。所以我们需要在User的模型中修改

USERNAME_FIELD='mobile'才能实现手机号的认证

登录测试:

解决csrf验证:

关于是否记住密码:

*********************************************************************************************************

如果觉得《Django博客系统(登录)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。