django自带的后台管理框架django-admin

1.访问后台地址:

启动django项目后,访问127.0.0.1:8000/admin

2. 创建超级管理员

创建管理员用户:Python manage.py createsuperuser 或者run manager task 输入createsuperuser,然后输入相应账号密码等

创建之后就可以登录,并再创建其他用户

创建项目时,数据库中默认带的数据库就是用于django-admin项目的

3.app(user)下的admin.py就是用于django-admin这个框架的。urls.py中的如下代码,就是配置admin/的

urls.py:
urlpatterns = [ path('admin/', admin.site.urls), #这里的admin,是django自带的

4.django-admin下创建分类,如展示某表中的数据,并搜索操作表数据等功能。

在admin.py中:

from django.contrib import admin
from . import models  #从当前目录下引用
# Register your models here.
admin.site.register(models.Nav)          #显示出某个表
# admin.site.register(models.Article)

class ArticleAdmin(admin.ModelAdmin):    #需要继承admin.ModelAdmin,才能筛选过滤等
    list_display = ['id','title','nav','img']   #需要展示出来的字段
    search_fields = ['title','content']   #需要根据哪些字段搜索,搜索不能按外键字段搜索,否则灰报错
    list_per_page = 5  #每页展示几条数据
    list_filter=['nav']    #按某个字段过滤,可以按外键,也可以指定多个字段

admin.site.register(models.Article,ArticleAdmin)    #admin.site.register(表名,类名),这里配置好就可以在后台显示出来

创建后查看127.0.0.1:8000/admin页面:

文章表的过滤页面:

页面中的分类名称“导航表”、“文章表”的这些名称,来自于建表时的“verbose_name”定义的名字。字段中的verbose_name 就是字段的展示名称

class Article(models.Model):
    title = models.CharField(max_length=20, verbose_name='文章名称')
    content = models.TextField( verbose_name='文章内容')   #内容较长时用TextField,不需要加max_length
    img = models.ImageField( upload_to='article_img',verbose_name='文章图片',null=True)
    # ImageField使用前必须装pip install Pillow
    #上传到指定路径下,必须存在
    is_delete = models.SmallIntegerField(default=1, verbose_name='是否被删除')   #字段中的verbose_name 就是字段的展示名称
    nav=models.ForeignKey(Nav,verbose_name='导航id',on_delete=models.DO_NOTHING,db_constraint=False)
    #db_constraint=False 不会真正建立外键,删除数据时没有实际关联
    #外键,这个字段的值从另一个表取值,on_delete=models.DO_NOTHING  必须存在,指对应字段值被删,这个字段不受影响,
    # on_delete=models.CASES  :关联字段删除后,会影响这个字段
    #一对多用外键
    create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
    update_time = models.DateTimeField(verbose_name='修改时间', auto_now=True)
    def __str__(self):   #    不写这个默认返回的是个对象
        return self.title
    class Meta:
        verbose_name='文章表'      #这里的verbose_name时表名描述  (单数形式)
        verbose_name_plural=verbose_name    #复数形式  d
        db_table='article'   #默认表名是appname+类名,db_table相当于重命名
        ordering=['id']   #默认按照某个字段排序,从小到大排序。“-id”:从大到小
原文地址:https://www.cnblogs.com/hancece/p/11736571.html