1.login()之前必须有 user = authenticate(username, password)
2.如果登录成功,request.user.is_authenticated() 返回为True,可以从request.user.username中获取当前用户名
代码修改
1.settings.py
注释掉django.middleware.csrf.CsrfViewMiddleware
2.template
- Form
将方法都改为post
将页面重构
top是导航栏——将导航栏右侧的登录注册添加{% if uname %}标签,
base是页面框架
各个页面基本都是base的{content}中的内容
3.models
将自定义的User命名更改成Users,不要跟auth.models里的冲突
在Users中添加方法create_user,在创建Users的同时也创建User
4.views.py/weibologin
import部分
增加 from django.contrib.auth import login,logout,authenticate
增加 from django.http import HttpResponseRedirect
更改 from weibologin.models import User->Users
增加 from django.contrib.auth.decorators import login_required——装饰器,限制登录才可以访问```
5.``` registersave``` 中
- 将成功注册的函数改乘Users.create_user
- 增加login()函数
- 将return的字典列表里增加{'uname': request.user.username}——对应template里也要修改
6.``` logincheck```里增加
```user = authenticate(username = "POST过来的值",password="POST过来的值")
login(requst,user)```
7.```models.py/weibologin```
from django.contrib import auth
from django.contrib.auth.models import User
from django.contrib.auth import authenticate```
def create_myUser(uname,psword):
Users.objects.create(name=uname,password=psword,login_type=0)
user=User()
user.username=uname
user.set_password(psword)
user.save()
def create_weiboUser(wname,psword):
Users.objects.create(name=wname,password=psword,login_type=1)
user=User()
user.username=wname
user.set_password(psword)
user.save()```
网友评论