django redirect传递参数_Django学习——用户登录退出(三)

为了进行用户管理,我们需要创建一个新的应用。

以下四步是我们创建应用的常规步骤,我们以后都以此依次完成应用创建以及最初操作:

  1. python manage.py startapp account
  2. 将应用(此处是account)添加(注册)到项目的settings.py中的INSTALLED_APPS中
  3. 在项目的url.py中配置应用的URL路径
  4. 在应用的目录中创建项目的url.py

a11b17abace25d3a88585109634bcbdb.png
命令行创建account应用

9845b6d3da7026e91d5d7d89df402a55.png
将应用account添加到settings.py中的INSTALLED_APPS

29b14da34c64aa0fec9f8c6506fcac3a.png
将应用account的URL添加到项目的URL中

dabc1cb1d79be519b8843d06e3066fc6.png
创建应用的URL

表单类

传统网站中,用户注册、登录框等用行话来表达就是表单。通常这些表单都是用纯粹的HTM来编写的,但是在Django中我们还可以用表单类来编写。

在应用的目录中创建forms.py文件,用以存放与表单有关的类。文件命名同样是遵循惯例。

cc91566cd9f435effdbc42bfff0ec640.png

在manage.py所做目录进入命令行执行 python manage.py shell进入Django交互模式来理解表单类

8d0e3b1ef81eed8d4a9173d39b5966be.png
  • 未绑定的实例:实例化表单类时未向表单类中传递参数而得到的实例,login = Login()就是未绑定实例
  • 绑定的实例:实例化表单类时向表单类中传递了参数而得到的实例,login = Login({'user_name': 'fake_name'})就是绑定实例
  • 实例.is_bound可以用来判断实例是否绑定。login.is_bound的返回值为True或者False
  • 实例.is_valid()可以用来判断传递给表单的数据是否正确。login.is_valid()的返回值为True或者False
  • 实例.cleaned_data可以获取实例字典形式的数据。如果绑定实例时传入的参数合法,则不在字典中显示该数据

视图函数

ac9488375bed34034d26774ae1f2d4b2.png
自定义登录视图函数
  • authenticate()函数,检验用户是否为本网站(项目)用户,如果是则返回一个User实例,否则返回None
  • login()函数,调用默认的session应用,将用户ID保存在session中。通常情况下,login()函数与authenticate()函数配合使用

内置登录方法

以上我们采用的是自己编写的登录方法,现在我们使用Django内置的方式实现登录

3b7a4220339bca4575f2e58436ccae5b.png
Django内置的方式实现登录

在浏览器刷新http://127.0.0.1:8000/account/login/,并完成登录后,会出现Page not found404错误,这是因为Django默认重定向了登录后的地址, 此时的请求地址已经变成http://127.0.0.1:8000/accounts/profile/。

ff10c38207f2759cd16f637ec63afdb9.png

自定义设置登录后的页面,可以在settings.py中增加LOGIN_REDIRECT_URL值

42ac1e50c30d7d68fb1d7bbdd3fb1085.png
settings.py中设置重定向

8de3014da58f46dfe8a22bcac92f90b7.png
根据登录状态来选择显示

在模板中可以通过request.user得到用户对象,user.is_authenticated则是返回用户的登录状态,登录则返回True,否则返回False。

内置退出方法

bc952baf0acdcf24ed68b69ac5d87962.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值