栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

文章目录
  • 一、admin管理后台简介
  • 二、设置语言和时区
  • 三、admin管理后台的使用
    • 1. 创建超级用户(管理员)
    • 2. 打开admin管理后台
    • 3. 关联对象的显示方法
  • 四、`null`和`blank`参数的区别

一、admin管理后台简介

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

admin管理后台在项目创建时,就时默认启用的:

在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

添加之后的效果:

四、null和blank参数的区别

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

  • null:

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

  • blank:

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

blank与 null的 不同:

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/349715.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号