网站规划与开发专业,企业网站建设的案例,wordpress有游客注册帐号功能,网站优化 济南文章目录 前言一、django配置二、后端实现1.新建app2.编写view3.配置路由 三、前端编写1、index.html2、register.html3、 login.html 总结 前言
之前#xff0c;写了django制作简易登录系统#xff0c;这次利用django内置的authentication功能实现注册、登录 提示#xff… 文章目录 前言一、django配置二、后端实现1.新建app2.编写view3.配置路由 三、前端编写1、index.html2、register.html3、 login.html 总结 前言
之前写了django制作简易登录系统这次利用django内置的authentication功能实现注册、登录 提示可参考之前的文章 Django制作简易注册登录系统
一、django配置
python包具体配置见之前的文章和之前一样注释掉跨域引入mysql authentication需要额外引入redis
CACHES {default: {BACKEND: django_redis.cache.RedisCache,LOCATION: redis://ip:6379,OPTIONS: {CLIENT_CLASS: django_redis.client.DefaultClient,}},session: {BACKEND: django_redis.cache.RedisCache,LOCATION: redis://ip:6379/1,OPTIONS: {CLIENT_CLASS: django_redis.client.DefaultClient,CONNECTION_POOL_KWARGS: {max_connections: 100}}}
}
SESSION_ENGINE django.contrib.sessions.backends.cache
SESSION_CACHE_ALIAS session
SESSION_COOKIE_AGE 500二、后端实现
1.新建app
python manage.py startapp app名称2.编写view
代码如下示例
# Create your views here.from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.models import User
from django.http import JsonResponse
from django.shortcuts import redirect
from django.shortcuts import renderdef login1(request):if request.method GET:print(GET)return render(request,login.html,)elif request.method POST:print(POST)# 获取参数user_name request.POST.get(username, )pwd request.POST.get(password, )# 用户已存在if User.objects.filter(usernameuser_name):# 使用内置方法验证user authenticate(usernameuser_name, passwordpwd)print(user)# 验证通过if user:# 用户已激活if user.is_active:login(request, user)request.session[current_user] user.username # 将用户名存储在session中request.session.set_expiry(0)return render(request, index.html)# 未激活else:return JsonResponse({code: 403,msg: 用户未激活})# 验证失败else:return JsonResponse({code: 403,msg: 用户认证失败})# 用户不存在else:return redirect(register)else:return render(request, login.html)def register(request):if request.method GET:return render(request, register.html)elif request.method POST:username request.POST.get(username, )pwd request.POST.get(password, )if User.objects.filter(usernameusername):return JsonResponse({code: 200,msg: user exists})else:user User.objects.create_user(usernameusername, passwordpwd)return JsonResponse({code: 200,msg: 注册成功去登陆})else:return render(request, register.html)def logout1(request):logout(request)request.session.clear()return redirect(index)def index(request):return render(request, index.html)
3.配置路由
在app中新建urls.py
from django.urls import path
from loginapp import views
from loginapp.views import index, login1, register, logout1
urlpatterns [path(, index, nameindex), # 定义根路径/到index视图的映射path(login/, login1, namelogin),path(logout/, logout1, namelogout),path(register/, register, nameregister),
]主路由刚建完项目时的那个目录下修改如下
from django.contrib import admin
from django.urls import path, includeurlpatterns [path(, include(app名称.urls)),path(admin/, admin.site.urls),
]三、前端编写
1、index.html
!DOCTYPE html
html langen
headmeta charsetUTF-8titleHome/title
/head
body{% if request.session.current_user %}h1Welcome, {{ request.session.current_user }}!/h1pYou are logged in./pa href{% url logout %}Logout/a{% else %}h1Welcome, Guest!/h1pPlease a href{% url login %}Login/a or a href{% url register %}Register/a./p{% endif %}
/body
/html2、register.html
!DOCTYPE html
html langen
headmeta charsetUTF-8titleRegister/title
/head
bodyh1Register/h1form methodpost action{% url register %}{% csrf_token %}label forusernameUsername:/labelinput typetext idusername nameusername requiredbrbrlabel forpasswordPassword:/labelinput typepassword idpassword namepassword requiredbrbrbutton typesubmitRegister/button/formpAlready have an account? a href{% url login %}Login here/a./p
/body
/html
3、 login.html
!DOCTYPE html
html langen
headmeta charsetUTF-8titleLogin/title
/head
bodyh1Login/h1form methodpost action{% url login %}{% csrf_token %}label forusernameUsername:/labelinput typetext idusername nameusername requiredbrbrlabel forpasswordPassword:/labelinput typepassword idpassword namepassword requiredbrbrbutton typesubmitLogin/button/formpDont have an account? a href{% url register %}Register here/a./p
/body
/html 可以看到登陆后欢迎用户名用户
总结
用户的认证内容存储在session中我设置的过期时间是5分钟。 没有对出错情况进行处理一旦出错仅展示报错json数据。