Django——Auth模块以及admin站点

这篇具有很好参考价值的文章主要介绍了Django——Auth模块以及admin站点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Django——Auth模块

一、Auth 模块

Auth 用户认证,本质上也是设置 Session。

Django 认证系统同时处理认证和授权
	认证:验证一个用户是否为 django 声明的用户,如果是可以进行登录
	授权:决定一个已经验证的用户有哪些功能是允许操作。

在 django 迁移数据库的是时候会自动生成一个用户认证表:auth_user , 存放用户基本信息(用户名 , 密码,邮箱……)

扩建 auth_user 表中的字段数据

方法一:(不推荐)
	创建一对一,绑定 auth_user 表

方法二:继承AbstractUser
在定义模型类的时候继承 AbstractUser , 进行数据库迁移不会生成 auth_user , 原有 auth_user 中的字段就继承到自定义的模型类中。
实现字段的扩建,直接在自定义模型类中添加额外新的字段即可。

扩建 auth_user 表的前提:
	1、在实现扩建的时候,不允许,不能先执行迁移数据库(如果已经迁移过数据,那么就换一个新的数据库)
	2、在扩建中,只能添加字段,不可以修改原有的字段。

重新配置 auth 认证模型类

# 配置自定义认证模型类
# AUTH_USER_MODEL = '应用名称.类名称'
AUTH_USER_MODEL = 'AuthApp.User'
from django.shortcuts import render , HttpResponse , redirect
from django.views import View
from AuthApp.models import User
from django.contrib.auth import authenticate , login

def index(request):
    # request.user , 获取用户名
    # AnonymousUser 匿名用户,表示用户名为登录
    print(request.user)
    # 判断用户是否登录
    print(request.user.is_authenticated)
    return render(request , 'index.html')

class RegisterView(View):

    def get(self , request):
        return render(request , 'register.html')

    def post(self , request):
        name = request.POST.get('username')
        password = request.POST.get('password')
        email = request.POST.get('email')
        mobile = request.POST.get('mobile')
        '''
        create:保存用户数据 ,密码不加密
        create_user:密码加密
        '''
        User.objects.create_user(username=name , password=password , email=email , mobile=mobile)
        return redirect('/login/')

class LoginView(View):

    def get(self , request):
        return render(request , 'login.html')

    def post(self , request):
        name = request.POST.get('username')
        password = request.POST.get('password')

        # authenticate 认证用户信息 , 用户存在返回用户数据 , 用户不存在返回 None
        user = authenticate(username=name , password=password)

        if not user:
            return render(request , 'login.html' , {'error_message':"用户名或者密码错误"})

        # login 登录成功, 保存用户登录状态
        login(request , user)
        return redirect('/index/')

实现验证登录,以及退出登录

# 配置全局的登录重定向 url
LOGIN_URL = '/login/'
from django.contrib.auth.decorators import login_required
'''
login_required 用户验证登录的装饰器
使用的时候需要配置局部的重定向 url
@login_required(login_url='/login/')

配置项目全局的从定向 url , 到配置文件中添加 login_url 的信息
'''
@login_required
def cart(request):
    return HttpResponse('<h1>购物车页面</h1>')

# 注销用户信息之前必须保证用户是登录状态
@login_required
def logoutview(request):
    # 注销用户(清除 Session 中的用户数据)
    logout(request)
    return redirect('/login/')

二、admin 站点

django 提供的网站后台数据管理

创建管理员用户

python manage.py createsuperuser

注册的时候,用户名不要中文,用户名和密码不要有一串一致的数据 ,邮箱允许为空 。

使用 admin 站点管理模型类数据

class Goods(models.Model):
    # verbose_name 对 admin站点中的模型类字段名称设置,对数据库不影响
    name = models.CharField(max_length=50 , verbose_name='商品名称')
    price = models.DecimalField(max_digits=11 , decimal_places=3 , verbose_name='价格')
    stock = models.IntegerField(verbose_name='库存')
    sales = models.IntegerField(verbose_name='销量')
    
    class Meta:
        db_table = 'goods'
        #设置 admin 站点中的表名
        verbose_name = '商品数据表'
        verbose_name_plural = verbose_name

注册模型类 ; 到所在应用下的 admin.py 文件中进行注册

from AdminApp.models import Goods
admin.site.register(Goods)

修改 admin 站点中的应用名称

在所在应用中的__init__.py添加

default_app_config = 'AdminApp.apps.AdminappConfig'

在对应的应用中的 apps.py 维纳设置站点使用的应用名称

在 apps.py 的类中添加属性

verbose_name = '商品表'

admin 模型类数据操作 , 在 admin.py 文件中操作

@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):

    # list_display 在站点中显示指定字段数据信息
    list_display = ['id' , 'name' , 'price' , 'sales']

    # list_filter 选择指定的字段作为条件过滤
    list_filter = ['name' , 'sales']

    # list_per_page 设置分页 , 指定每一页有多少条数据
    list_per_page = 2

    # search_fields 配置搜索条件,数据类型要用元组
    search_fields = ('id' , 'name')

    # list_editable 在显示列表页中设置允许修改的字段数据
    list_editable = ('name' , 'price')

    # # fields 在编辑页中指定字段允许修改
    # fields = ('name' , 'price')

    # fieldsets 设置编辑页分组显示数据
    fieldsets = (
        # ('分组名称' , {'fields':[指定字段名]}
        ('商品基本信息' , {'fields':['name' , 'price']}),
        ('商品销量信息' , {'fields':['sales' , 'stock']})
    )

    # 设置只读字段
    readonly_fields = ('name',)

在 admin 站点中可以自定义字段数据 , 不影响数据库

def num(g):
    # 参数 g , 下面的类会自动的将模型类传入
    add = g.price * g.sales
    return add
# 制作 num 在 admin 站点中的字段名
num.short_description = '商品销售额'

@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):

    # list_display 在站点中显示指定字段数据信息
    list_display = ['id' , 'name' , 'price' , 'sales' , num]

遭周文而舒志

链接:https://pan.baidu.com/s/1ir9eM2kL2D7hU9ZTNu4-Xw
提取码:malw文章来源地址https://www.toymoban.com/news/detail-861599.html

到了这里,关于Django——Auth模块以及admin站点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Django的django.contrib.auth.models模块中的AbstractUser类介绍。

    在Django框架中, django.contrib.auth.models 模块提供了用于身份验证和授权的相关功能。其中, AbstractUser 类是Django默认的用户模型(user model)的抽象基类。 AbstractUser 类提供了一些常见的用户相关字段和方法的默认实现,它可以作为创建自定义用户模型的基础。当你在Django项目中

    2024年02月13日
    浏览(22)
  • python-0004-django站点

    django自带站点用来操作增删改查 项目setting.py 在子应用的models.py中创建,如下: 在pycharm的终端或虚拟环境执行 在pycharm的终端或虚拟环境执行 此时会在项目的db.sqlite3中生成信息 在子应用的admin.py中注册,示例如下: 目的:显示更全的数据 重写model的__str__,如: http://ip:po

    2024年03月15日
    浏览(22)
  • windows解决python安装django架构没有django-admin命令

    目录 一.尝试安装与配置 1.直接pip命令安装 2.用pycharm测试 3.官网下包安装 二.解决 1.找到django安装的路径 2.配置系统变量 3.测试创建项目 3.1.执行访问页面 3.2.解决 3.3.继续测试 4.pycharm打开     新建项目测试    注:发现没有django这个框架选项,后面发现这个功能只有专业版才

    2024年02月06日
    浏览(26)
  • python Django的admin后台建设

    1、 django提供了完善的后台管理数据库的接口 ,可供开发过程中调用和测试使用 2、 django 会搜集所有已注册的模型类 ,为这些模型类提供数据管理界面,供开发者使用 admin配置步骤 1、创建后台管理账号-该账号为管理后台最高权限账号—注意:可以创建多个超级用户 python

    2023年04月16日
    浏览(20)
  • django报错设置auth User

    1.报错:auth.User.groups... auth.User.user_permissions...  我们的用户组、用户权限只能关联一个用户 , 我们自己定义了一个用户表,系统还有一个用户表,这时候就会出问题。 解决办法: 让给我们自己定义的user替换系统的就可以了。 settings.py里面加上: 可能会报错:ValueError: Inv

    2024年02月16日
    浏览(19)
  • django_auth_ldap登录权限

    用户登录权限分为三种,通过is_active,is_staff,is_superuser标识。可以对组赋予对应的权限。 设定active组、staff组和superuser组分别对应三种权限。在不同组权限下的登录情况如下: 当用户不属于任何一组: 登录失败,提示如图: 当用户仅属于active组: 登录失败,提示如图: 当用

    2024年02月07日
    浏览(22)
  • Django学习笔记-默认的用户认证系统(auth)

    Django 自带一个用户验证系统。它负责处理用户账号、组、权限和基于cookie的用户会话。 Django 验证系统处理验证和授权。简单来说,验证检验用户是否是他们的用户,授权决定已验证用户能做什么。这里的术语验证用于指代这两个任务。 认证系统由以下部分组成: 用户 权限

    2024年02月14日
    浏览(23)
  • django admin页面美化

    美化 Django Admin 页面可以通过多种方式实现,从简单的 CSS 样式调整到完全自定义模板。以下是一些建议和步骤来美化 Django Admin 页面: 1. 使用 CSS 覆盖默认样式 这是最简单的方法,你可以通过添加自定义 CSS 文件来覆盖 Django Admin 的默认样式。 步骤: 在你的 Django 项目中创建

    2024年02月22日
    浏览(23)
  • Django之admin后台页面功能详解

    Django是一种流行的Python Web开发框架,它提供了一个功能强大且易于使用的admin界面,用于管理网站的后台数据和功能。Django的admin界面是自动生成的,它根据你的模型类自动创建表单和列表视图。你只需将模型类注册到admin界面,就可以轻松地管理和操作数据库中的数据。 a

    2024年04月26日
    浏览(23)
  • Django_admin数据管理后台

    目录 一、基础操作 二、自定义后台操作数据行为 源码等资料获取方法 admin数据管理后台是django内置的一个后台管理界面,能查看已注册模型类的数据结构,以及对数据的增删改。 1.1 检查项目目录下的urls.py有没有如下配置 1.2 创建django的admin后台管理账号 1.3 在app对应目录下

    2024年02月16日
    浏览(18)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包