• 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”:从大到小
  • 相关阅读:
    windbg 调试 winform程序(二车间机台程序)
    jquery操作数组的方法
    kafka之consumer参数auto.offset.reset
    常用linux脚本记录
    linux 常用命令总结
    华为S系列交换机配置
    python画冰墩墩
    进程间通信——IPC之共享内存
    ARP绑定IP和MAC的作用
    谷粒商城中renrenfast报错Error creating bean with name 'ossClient'
  • 原文地址:https://www.cnblogs.com/hancece/p/11736571.html
Copyright © 2020-2023  润新知