为了进行用户管理,我们需要创建一个新的应用。
以下四步是我们创建应用的常规步骤,我们以后都以此依次完成应用创建以及最初操作:
- python manage.py startapp account
- 将应用(此处是account)添加(注册)到项目的settings.py中的INSTALLED_APPS中
- 在项目的url.py中配置应用的URL路径
- 在应用的目录中创建项目的url.py
表单类
传统网站中,用户注册、登录框等用行话来表达就是表单。通常这些表单都是用纯粹的HTM来编写的,但是在Django中我们还可以用表单类来编写。
在应用的目录中创建forms.py文件,用以存放与表单有关的类。文件命名同样是遵循惯例。
在manage.py所做目录进入命令行执行 python manage.py shell进入Django交互模式来理解表单类
- 未绑定的实例:实例化表单类时未向表单类中传递参数而得到的实例,login = Login()就是未绑定实例
- 绑定的实例:实例化表单类时向表单类中传递了参数而得到的实例,login = Login({'user_name': 'fake_name'})就是绑定实例
- 实例.is_bound可以用来判断实例是否绑定。login.is_bound的返回值为True或者False
- 实例.is_valid()可以用来判断传递给表单的数据是否正确。login.is_valid()的返回值为True或者False
- 实例.cleaned_data可以获取实例字典形式的数据。如果绑定实例时传入的参数合法,则不在字典中显示该数据
视图函数
- authenticate()函数,检验用户是否为本网站(项目)用户,如果是则返回一个User实例,否则返回None
- login()函数,调用默认的session应用,将用户ID保存在session中。通常情况下,login()函数与authenticate()函数配合使用
内置登录方法
以上我们采用的是自己编写的登录方法,现在我们使用Django内置的方式实现登录。
在浏览器刷新http://127.0.0.1:8000/account/login/,并完成登录后,会出现Page not found404错误,这是因为Django默认重定向了登录后的地址, 此时的请求地址已经变成http://127.0.0.1:8000/accounts/profile/。
自定义设置登录后的页面,可以在settings.py中增加LOGIN_REDIRECT_URL值
在模板中可以通过request.user得到用户对象,user.is_authenticated则是返回用户的登录状态,登录则返回True,否则返回False。