auth组件的使用

 1 from django.contrib import auth
 2 from django.contrib.auth.models import User
 3 from django.contrib.auth.decorators import login_required
 4 
 5 
 6 # Create your views here.
 7 def reg(request):
 8     form_obj = MyRegForm()
 9     if request.method == 'POST':
10         # 调用父类初始化
11         form_obj = MyRegForm(request.POST)
12         if form_obj.is_valid():
13             dic = request.POST.dict()
14             q = dic.pop('csrfmiddlewaretoken')
15             print(q)
16             q = dic.pop('confirm_password')
17             #不pop应该也没有什么问题,因为打散后就是key=valued
18             User.objects.create_user(**dic)
19             return HttpResponse("OK")
20 
21     return render(request, 'reg.html', locals())
22 
23 
24 def login(request):
25     lon_obj = MyloginForm()
26     if request.method == 'POST':
27         #调用父类初始化
28         lon_obj = MyloginForm(request.POST)
29         if lon_obj.is_valid():
30             username = request.POST.get('username')
31             password = request.POST.get('password')
32             #需要用加密的方式存入auth表中 才可以使用authenticate 不然一直返回None
33             user_obj = auth.authenticate(username=username, password=password)
34             if not user_obj:
35                 return render(request, 'login.html', locals())
36             else:
37                 request.session['password'] = password
38                 request.session['is_login'] = True
39                 auth.login(request, user_obj)
40                 #在没有登录的情况下,如果访问了某个需要权限页面,那么就要跳转到登录页面,但需要保存那个页面,登录后应该返回来
41                 path = request.GET.get("next") or "/index/"
42                 print(path)
43                 return redirect(path)
44     return render(request, 'login.html', locals())
45 
46 #没有登陆时 访问的那个页面会当成参数 添加到后面
47 #默认是跳转到/accounts/login/ 需要配置LOGIN_URL = '/login/'
48 @login_required
49 def index(request):
50     a = request.session.values()
51     #哪怕你拿到了session值 我还要判断下在登录的时候 我设置的值是否正确,如果密码正确,session正确那就不能怪我了
52     is_login = request.session.get('is_login')
53     if not is_login:
54         return HttpResponse("用户未登录")
55 
56     session_key = request.session.session_key
57 
58     obj = render(request, 'index.html')
59     obj.headers['cacao'] = 111
60     a = HttpResponse("index页面。。。")
61     a.headers['papa'] = 222
62     return a

 

posted @ 2022-03-18 11:52  咖喱给给啊  阅读(86)  评论(0)    收藏  举报