我创建了自己的自定义登录名,我没有使用django的登录名。
这是我的 models.py :
class TipeUser(models.Model):
tipe = models.CharField(max_length=30)
detail = models.CharField(max_length=50, blank=True, null=True)
class User(models.Model):
user = models.CharField(max_length=20)
password = models.CharField(max_length=50)
state = models.CharField(max_length=1)
id_tipe_user = models.ForeignKey(TipeUser, on_delete=models.CASCADE)
我的 views.py :
def login(request):
context={}
return render(request, 'login.html', context)
def validate(request):
if request.method=='POST':
nameUser = request.POST.get('nameUser')
passwordUser = request.POST.get('passwordUser')
password = md5.new(passwordUser).hexdigest()
try:
userAdmin = User.objects.get(user=nameUser, password=password, id_tipe_user=1, state=1)
request.session['nameUser'] = userAdmin.user
return redirect('home')
except User.DoesNotExist:
message= "User/Password wrong !!"
context = {
'message': message,
}
return render(request, 'login.html', context)
def home(request):
if 'nameUser' not in request.session:
return render(request, 'login.html', {})
else:
return render(request, 'myMenu.html', context)
def logout(request):
if 'nameUser' in request.session:
#delete session
del request.session['nameUser']
#redirect to login
return redirect('login')
else:
return redirect('login')
我想再说一遍,这是一种好的做法吗?我在这里绝对安全,还是需要修改代码?
答案 0 :(得分:10)
不,不是。
TipeUser
,其ID为1(无论如何)。state
的{{1}} CharField。坦率地说,您是在重新发明Django为会话和用户提供的完美轮子。你为什么做这个?如果您需要有关用户模型的其他数据,请there's support for that already。