Djangao view的相关操作
创建类
我们是通过类方法来创建view的,创建之后继承view基类,它的下面就有get和post请求的处理方法
from audioop import reverse
from django.contrib.auth import authenticate, login
from django.shortcuts import render
from django.views.generic.base import View
from django.http import HttpResponseRedirect
from django.urls import reverse
class LoginView(View):
def get(self, request, *args, **kwargs):
#返回相关的视图
return render(request, "html/login.html")
def post(self, request, *args, **kwargs):
#获取相关的数据
user_name = request.POST.get("username","")
password = request.POST.get("password","")
#用于通过用户和密码查询用户是否存在
user = authenticate(username=user_name, password=password)
if user is None:
return render(request, "html/login.html", {"msg": "用户名或密码错误"})
#只要使用auth.login(request, user)登录操作后,后续即可从request.user拿到当前登录的用户对象
login(request, user)
#这里的index是在urls配置路由的name
return HttpResponseRedirect(reverse("index"))
我们利用authenticate()方法,来对用户进行验证。该方法通常接收username与password作为参数
配置urls
我们导入了TemplateView通过它下面的.as_view() 这个方法指定html,在后面加入name
from django.urls import path
from django.views.generic import TemplateView
import xadmin
from apps.users.views import LoginView
urlpatterns = [
path('xadmin/',xadmin.site.urls),
path('', TemplateView.as_view(template_name="html/index.html"),name='index'),
path('login/', LoginView.as_view(), name="login")
]
HTML的设置
在前端判断是否登录可以使用
{% if request.user.is_authenticated %}
来进行判断是否登录
浙公网安备 33010602011771号