100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > django2.2-admin管理后台的使用

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

时间:2022-05-27 05:37:05

相关推荐

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

文章目录

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

一、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 adminfrom django.urls import pathurlpatterns = [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 adminfrom . 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 AppConfigclass 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_nameclass 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时,不允许为空。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。