Django学习4-用户User模型、进行登录

创建用户账户

建立一个用户注册和身份验证系统,让用户能够注册账户,进而登录和注销。创建一个新的应用程序,其中包含与处理用户账户信息相关的所有功能。对topic模型做出修改,让每个Topic和post都归属于特定的用户。

应用程序users

使用startapp创建应用程序users:
在这里插入图片描述
将users应用添加到 settings.py 中。

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 创建的应用
    'learning_logs',
    'users',
]

Django命名空间和URL模式的包含

Django允许多个URL指向一个视图,这样URL的逆向解析(reverse)就会出现困难,因为同一个视图有两个结果可以匹配。所以就用到了url()函数的参数name,独一无二的name参数使得逆向解析就变得一一对应了。

{% url 'topic' topic.id %}

更好的解决方式就是使用命名空间namespace。即使不同的应用程序使用相同的URL名称,URL命名空间也能唯一地逆向解析URL模式。同一个应用生成的多个实例的URL模式可以被区分开来。
URL的namespace由2部分组成:

  • 应用级别的namespace:用来描述正在部署的应用(application),同一个应用程序的每个实例都具有相同的应用程序命名空间。多个应用间,可能产生同名的url,在各自应用下的urls.py中使用app_name的变量就可以区分它们是否来自不同的应用。
  • 实例级别的namespace:一个app,可以创建多个实例(instance)。多个实例间URL使用应用命名空间进行逆向解析就会出现问题。使用实例命名空间的方法是在包含(include)其他URL模式时,使用关键参数namespace=。实例级别的命名空间名可以和应用级别的命名空间名相同,这种方法用来指定应用的默认实例。

Django允许在一个URL模式中包含其他URL模式,使用django.urls下include可以从其他应用下的 urls.py 中导入URL模式。使用方法:include(module, namespace=None)
命名空间用:符号来链接URL,如learning_logs:topicsusers:index
将命名空间引入项目中,在learning_logs和users应用下创建各自应用的urls.py。并修改learning_logs下视图函数和模板的逆向解析URL。
learning_logs/urls.py:

from django.urls import path
from . import views

app_name = 'learning_logs'
urlpatterns = [
    path('', views.index, name='index'),
    path('topic/<int:topic_id>/', views.topic, name='topic'),
    path('topics/', views.topics, name='topics'),
    path('new_topic/', views.new_topic, name='new_topic'),
    path('new_post/<int:topic_id>/', views.new_post, name='new_post'),
    path('edit_post/<int:post_id>/', views.edit_post, name='edit_post'),
]

在项目目录下的urls.py中:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('learning_logs.urls', namespace='learning_logs')),
]

Django身份验证系统

Django的身份验证系统(authentication system)提供了用户身份验证(authenticate)和权限管理(authorization)的功能。主要的实现在django.contrib.auth包中

User对象

User对象是身份验证系统的核心,是与网站进行交互的人员。它们被用于启用访问限制,注册用户配置文件,将内容与创建者关联等内容。只有一类的用户对象存在于身份验证系统,就是之前提到的superuser超级用户或称之为admin管理员。staff用户就是一些有特殊属性的user对象。

User字段

User定义在django.contrib.auth.models中,它的几个字段:

  • usename:由字母,下划线_, @, +,
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值