lxinghua

博客园 首页 新随笔 联系 订阅 管理

一、diango后台

在项目的目录下我们会看到这样一个url的配置,你有自己去访问这个url地址吗?访问之后发现了什么呢?其实就是django的后台登录界面。

前端访问  127.0.0.1:8000/admin/之后就会进入django的后台登录界面。

1. Django管理界面

为你的员工或客户生成一个用户添加,修改和删除内的后台是一项缺乏创造性和乏味的工作。因此,Django全自动地根据模型创建后台界面。

Django产生与一个公众页面和内发发布者页面完全分离的新闻类站点的开发过程中。站点管理人员使用管理系统来添加新闻、事件和体育时讯等,这些添加的内容被显示在公众页面上。

Django通过为站点管理人员创建统一的内容编辑界面解决了这个问题。管理界面不是为了网站的访问者,而是为管理者准备的。

2. admin创建用户

虚拟环境的项目文件目录下运行命令,创建一个管理员账号:

python manage.py createsuperuser

提示输入用户名、邮箱、密码,依次输入即可

之后就可以通过该账号密码登录django后面页面。

或者直接在pycharm界面点击Tools-->Run manage.py Task...进入连接manage.py执行界面运行命令: createsuperuser , 同样提供用户名、邮箱、密码即可。

3. settings.py中更新时区以及时间地点

4. 向admin中注册模型:

①将之前在表关系中那几个模型类创建在现在的app的models.py中,即需要将表关系提前建立在对应app的models.py文件中;

②将模型类执行映射在数据库中生成表

③在app里面有个admin.py的文件,在这个文件中注册模型

此时在admin后台页面显示如下

将模型类在admin.py中注册过后,刷新管理页面,对数据表中数据进行增删改查操作

对数据表中数据进行增删改查操作

下图是增加学生信息表中的数据

5. 自定义管理页面

Diango提供了admin.ModelAdmin类,通过定义ModelAdmin的子类,来定义模型的Admin界面的显示方式

列表页属性

list_display:显示自动,可以点击列头进行排序

list_filter:过滤字段,过滤框会出现在右侧

search_fields:搜索字段,搜索框会出现在上侧

list_per_page:分页,分页框会出现在下侧

添加、修改页属性

fields :属性的先后顺序

fieldsets:属性分组

注意:上面两个属性,二者选一。

 二、Auth系统中的表

从表的名称就能看出,auth_user, auth_group, auth_permission分别存放了用户,用户组,权限的信息表。另外三张表就是多对多的关系表。

User:User是auth模块中维护用户信息的关系模式(继承了models.Model),数据库中该表被命名为auth_user;

Group:User对象中有一个名为groups的多对多字段,多对多关系有auth_user_groups数据表维护。Group对象可以通过user_set反向查询用户组中的用户;

Permission:Django的auth系统提供了模型级的权限控制,即可以检查用户是否对某个数据表拥有增(add)、改(update)、删(delete)权限。

auth系统中User模型常用属性和方法:

auth认证系统功能:

create_user  创建用户

authenticate   验证登录

login   记住用户的登录状态

logout   退出登录

is_authenticated   判断用户是否登录

login_required   判断用户是否登录的装饰器

使用auth系统:

在auth系统中,django已经为我们提供了一个用户身份验证,用户组和权限管控这些功能,那么就可以使用它来完善我们现有的这个项目。

这个是我们之前这个项目事项的一些功能:

接下来要在现有的项目中实现以下功能:

1. 使用内置的auth_user表来存储用户注册信息;

2. 使用auth系统中的login,logout,authenticate实现登录,退出和验证登录;

3. 给blog中视图设置邓丽使用权限;

4. 给添加博客设置用户的权限。

准备工作:

1. 创建一个新的app,并将app注册;

2. 准备好之前使用过的登录注册的模版和form表单的验证;

3. 给视图配置好响应的url路由;

4. 导入我们需要使用的auth中的User模型,login,logout,authenticate方法。

注意:对于这个登录注册的例子中,我们把之前自己定义的模型类改成使用auth系统中的User模型类,在User类中同样存在着用户名,密码,邮箱这几个字段,所以我们可以继续使用之前的form变淡和之前用过的模版。

三、登录注册实现

使用auth系统实现登录注册:

1. 导入我们需要用到的方法(在app的视图文件views.py文件中导入)

2. views.py的注册里面视图类相关的修改,将注册用户直接存储到系统自带的auth_user中,其方法是create_user

3. views.py的登录里面视图类相关的修改,直接采用系统自带的用户信息验证方法autheneicate

使用auth系统实现状态保持和退出:

1. 登录里面保存状态的修改,在用户登录验证成功后,直接采用login方法进入用户服务界面

2. 退出登录里面的修改,直接采用logout方法就可以直接注销cookie或者session临时存储信息

login_required装饰器:

1. 在setting文件中配置登录的url,即登录界面的url

2. 给需要登录权限才能进入的视频添加login_required装饰器,这样在登录的时候就会自行进行权限认证

 

next_url的使用:

从刚才登录页跳转中,我们会看到一个next的参数,这个参数前面的需要邓丽的那个视图的url。

四、权限的实现

查看数据库中auth_permission这张表,在里面有所有的表的一些操作权限,这些是在表创建的同时添加进去的数据。

permission_required装饰器:

@permission_required(appname.codename(权限名称))给blog.app当中的add添加博客的视图设置权限。其目的是限制没有权限的用户随意修改信息。

add_blogmodel是权限中的一种。

Permission权限模型:即给对应的用户添加权限

注:超级用户是拥有所有权限的。

Permission权限模型:

posted on 2023-05-26 14:28  興華  阅读(18)  评论(0编辑  收藏  举报