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”:从大到小