django2.2-admin管理后台的使用

一、admin管理后台简介

admin管理后台是django自带的一个组件,它给我们提供了一个管理项目的后台站点,打开该站点,就可以通过图形界面方便的管理项目数据。在项目创建好后,就是默认启用的。

在settings.py中,可以看到它是默认注册好的:

INSTALLED_APPS = [
    'django.contrib.admin',  # admin 管理后台
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

而在项目的urls.py中,定义了访问admin管理后台的 url :

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

urlpatterns = [
    path('admin/', admin.site.urls)  # 访问 admin管理后台的路径,该路径可以自由设置
]

二、设置语言和时区

django admin管理后台默认显示的语言是英语,时区是协调世界时(UTC),与我们的语言和时区不符合。

为了让 admin管理后台显示中文和使用北京时间,我们要在settings.py中设置语言和时区:

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'  # 没写错,是上海,不是北京

这样 admin管理后台就会显示中文,并使用北京时间。

三、admin管理后台的使用

1. 创建超级用户(管理员)

首先要创建管理员,普通用户默认无法登录admin管理后台。

在终端中运行命令:

python manage.py createsuperuser

按照提示输入用户名、邮箱、密码即可完成创建。

2. 打开admin管理后台

运行django项目,然后打开127.0.0.1/admin/,就进入了admin管理后台的登录页面,输入管理员账户和密码即可登录。

此时,由于我们没有向后台注册任何模型,所以只有一个django自带的“认证和授权”:

在这里插入图片描述

想要管理其他模型,只需要在app文件夹下的apps.py中注册模型:

from django.contrib import admin
from . import models
# Register your models here.

admin.site.register(models.UserInfo)
admin.site.register(models.Blog)
admin.site.register(models.Article)
……

重新打开admin管理后台:

在这里插入图片描述

  • 注意:

    • “APP01”是app的名称,想要修改,可以在app文件夹下的apps.py中修改:

      from django.apps import AppConfig
      
      
      class App01Config(AppConfig):
          default_auto_field = 'django.db.models.BigAutoField'
          name = 'app01'
          verbose_name = '低仿博客园'  # 设置该属性
      
    • “Blogs”是模型类的类名加“s”,想要修改,可以在对应的模型类中写入:

      class Blog(models.Model):
          ……
          class Meta:
              verbose_name = '博客'  # 单数形式
              verbose_name_plural = '博客'  # 复数形式
      

      更多Meta的功能请参考官方文档:传送门

    • 最后的“用户”,是因为我们的用户模型继承了django的AbstractUser类,所以django直接起了个中文名字叫“用户”。

    上述内容修改完毕后的效果:

    在这里插入图片描述
    之后就可以在admin管理后台,通过图形界面操作数据了

3. 关联对象的显示方法

在设置外键字段关联对象时,会显示“XXX object (X)”,可读性很差,完全不知道该对象是哪一个。

比如,在个一篇文章设置所属博客和所属分类时:

在这里插入图片描述

如果想修改显示的内容,就需要在模型类中定义__str__方法,提高可读性:

class Blog(models.Model):
    """博客"""
    site_name = models.CharField(verbose_name='博客名称', max_length=32)
	……

    def __str__(self):
        return self.site_name



class Category(models.Model):
    """文章分类"""
    category_name = models.CharField(verbose_name='文章分类', max_length=12)
	……

    def __str__(self):
        return self.category_name

添加之后的效果:

在这里插入图片描述

四、nullblank参数的区别

在设置某些字段时,明明定义了null=True,却还是不能留空。这是因为该模型字段没有设置blank=True

  • null

    如果设置为 True,当该字段为空时,Django 会将数据库中该字段设置为 NULL。默认为 False

  • blank

    如果设置为 True,该字段允许为空。默认为 False

blanknull的 不同:

null 选项仅仅是数据库层面的设置,它只是允许了数据库字段可以为空;而 blank是涉及表单验证方面。如果一个字段设置为 blank=True ,在进行表单验证时,接收的数据该字段值允许为空,而设置为 blank=False时,不允许为空。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花_城

你的鼓励就是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值