12.Django后台

Django的一大特色就是自带后台,可以快速管理你的应用而不用编写太多的代码。 比如发布文章、编辑站点信息等等。

与后台相关的都在admin.py文件。

创建项目:

$ django-admin startproject blog_admin
$ cd blog_admin
$ python3 manage.py startapp blog

项目结构

admin.md不是项目文件(是笔记)
查看setting.py

INSTALLED_APPS = [
    'django.contrib.auth',
    'django.contrib.admin', # 启用admin 如果没有自己添加即可
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog.apps.BlogConfig', 
]

修改models.py

from django.db import models


# verbose_name 的作用是显示在后台中,不写就显示字段名称
class Article(models.Model):
    title = models.CharField(verbose_name="标题", max_length=125)
    content = models.TextField(verbose_name='内容')

    pub_date = models.DateTimeField(verbose_name='发表时间', auto_now_add=True, editable=True)
    modify_date = models.DateTimeField(verbose_name='修改时间', auto_now=True, null=True)

同步数据库

$ python3 manage.py makemigrations # 作用:记录数据库的更改,此时并未将修改应用到数据库
$ python3 manage.py migrate # 作用:将改动同步到数据库

创建一个超级管理员:

$ python3 manage createsuperuser
$ python3 manage.py createsuperuser
Username (leave blank to use 'xxx'): admin # 用户名
Email address: admin@litets.com # 邮箱
Password:  # 密码 是看不到输入的 为了安全
Password (again): # 确认密码 是看不到输入的 为了安全
Superuser created successfully.

启动服务器

$ python3 manage.py runserver

在浏览器里面输入127.0.0.1:8000/admin,会出现一个输入账号密码的表单,就是我们上面创建的。 但是现在我们看到的是英文的,我们修改setting.py中的LANGUAGE_CODE = 'en-us'为`LANGUAGE_CODE = 'zh-hans``,重启服务器,再 次进来就是中文的了。

再管理后台我们可以操作前端展示了。 默认只有用户管理,我们可以添加自己需要的到后台。

修改admin.py

from django.contrib import admin

from .models import Article

admin.site.register(Article)

重启服务器,刷新http://127.0.0.1:8000/admin/会看到多了一个Articles,点击增加、修改可以进行 文章的操作。 我们看到文章列表是Article object (1)这样无法阅读,我们修改models.py 给Article增加一个方法

def __str__(self):
        return self.title

然后刷新页面,列表将会展示文章的名称。

展示更多信息在列表上: 修改admin.py

class ArticleAdmin(admin.ModelAdmin):
    # 定义要在后台展示出来的字段
    list_display = ('title', 'pub_date', 'modify_date')

admin.site.register(Article, ArticleAdmin)

重启服务器,刷新列表,发表时间,修改时间也展示出来。
可以看到标题就是定义model时候的verbose_name定义的内容。

装饰器注册
除了上面的方式还可以使用装饰器注册,但本质是一样的。

@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
    # 定义要在后台展示出来的字段
    list_display = ('title', 'pub_date', 'modify_date')

#admin.site.register(Article, ArticleAdmin)
声明:原创文章,版权所有,转载请注明出处,https://litets.com。