在view的视图函数中 可以打印自省以下request
print(dir(request))
其中的方法有很多
例如request.method可以得出此次请求使用的方法是什么
分别对GET请求 以及 POST 请求分别返回不同的页面 进行不同的操作
def login(request):
if request.method == "GET":
# 如果是get请求返回登录的页面
return render(request, 'login.html')
elif request.method == "POST":
username = requests.POST.get("un")
# 如果是post请求 可以接收由网页传递过来的数据 比如用户名和密码
# 其中post请求接收参数的方法是 request.POST.get() # get中内容是前端页面表单中name的值
# Custom 是自定义用户类 上一个有说如何自定义用户类
# 判断这个username是否在数据库中 如果存在则返回True 否则返回False
user = Custom.objects.filter(username=username).first()
if user:
# 用户名存在 再获取密码
password = request.POST.get("pwd")
# 接下来再判断密码
# Custom 继承的父类中有check_password这个方法 校验密码是否正确
if user.check_password(raw_password=password):
return HttpResponse('登录成功')
else:
error = "密码错误"
else:
error = "用户名不存在"
# 如果用户名或者密码不对,则还是返回登录页面 将错误信息返回到页面中
return render(request, 'login.html', {"error":error})
注册基本一致
def register(request):
if request.method == "GET":
return render(request, 'register.html')
elif request.method == "POST":
username = request.POST.get('un')
user = Custom.objects.filter(username=username).first()
if user:
error = '该用户名已经存在'
else:
password1 = request.POST.get('pwd')
password2 = request.POST.get('pwd2')
if password1 == password2:
user = Custom.objects.create_user(username=username, password=password1)
lgi(request, user)
# 重定向 + 解除硬编码
return redirect(to=reverse('news:index'))
else:
error = '两次密码输入不一致'
return render(request, 'register.html', {"error":error})