案例
实现注册和登录
注册:用户输入账号密码以后提交到服务器,服务器将账号密码保存在数据库中,然后重定向到登录页面
登录:用户输入账号密码,服务器判断账号密码是否存在,如果存在登录成功跳转到主页面
分析
需要3个页面,3个类视图(5个视图方法)
注册类视图:
get视图方法:获取注册页面
post视图方法:提交注册的账号密码,并且跳转到登录页面
登录类视图:
get视图方法:获取登录页面
post视图方法:提交登录的账号密码,并且跳转到主页面
主页面类试图:
get视图方法:获取主页面
实现方法
注册类视图
使用get请求获取页面
# 注册视图
class RegisterView(View):
# 返回注册页面
def get(self,request):
return render(request, 'register.html')
# 提交账号密码并保存到数据库
使用post提交账号密码数据,并保存保存在数据库里
def post(self,request):
# 获取表单中提交的账号密码
user1 = request.POST.get('user')
pwd1 = request.POST.get('pwd')
# 把账号密码保存到数据库中。可能出现异常,所以要进行异常处理
try:
# 新增数据
Users.objects.create(user=user1,pwd=pwd1)
except Exception as e:
print(e)
return HttpResponse('账号密码注册失败')
注册成功后跳转到登录页面
# 重定向到登录页面
return redirect('/login/')
登录类视图
使用get获取登陆页面
# 登陆视图
class LoginView(View):
# 返回登录页面
def get(self,request):
return render(request,'login.html')
使用post提交账号和密码,判断是否有该账号的数据
# 提交账号密码,验证账号密码是否存在
def post(self,request):
user1 = request.POST.get('user')
pwd1 = request.POST.get('pwd')
# 查看数据库中是否有user1的数据
try:
# 查询数据库的用户名与表单输入的用户名一致的数据
user_data = Users.objects.get(user=user1)
except Exception as e:
print(e)
return HttpResponse('账号不存在')
如果账号存在,就看密码是否一致
# 用户存在,则判断密码
if pwd1 == user_data.pwd :
return redirect('/index/')
else :
return HttpResponse('密码错误')
主页面类视图
使用get获取页面
class IndexView(View):
def get(self,request):
return render(request,'index.html')
总结
- GET请求处理和POST请求处理
- 接收Request,返回HttpResponse(基础),Render(页面),Redirect(重定向)响应
- CBV类试图