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