admin后台系统

1. 安装MySQL

1,安装mysql:

    sudo apt install mysql-server
    (安装过程中输入密码并牢记)
    
2,安装后进入mysql:
    mysql -u用户名 -p密码
    mysql -uroot -proot
3,在Django中配置和使用mysql数据库
使用mysql数据库,settings中配置如下:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'mydb',
            'USER': 'root',
            'PASSWORD': 'root',
            'HOST': '127.0.0.1',
            'PORT': '3306',
        }
    }
4, 添加PyMySQL 
 然后使用pip添加依赖包: pip install PyMySQL
 并在工程目录下的__init__.py中添加以下代码来配置PyMySQL: 
    import pymysql
    pymysql.install_as_MySQLdb()

2. django admin后台系统

Django中默认集成了后台数据管理页面,通过简单的配置就可以实现模型后台的Web控制台。

管理界面通常是给系统管理员使用的,用来完成数据的输入,删除,查询等工作。
使用以下models来示范admin后台系统的用法。
创建一个项目, 用来说明出版社, 书籍和作者的关系。
   假定关系:作者:书籍 => 1:n  (一本书由一个作者完成, 一个作者可以创作多本书)
          出版社:书籍 => n:n (一个出版社可以出版多本书, 一本书可以由多个出版社出版)
要求:
    1. 创建作者author, 出版社publisher,书籍book三个应用.
    2. 给每个应用分别创建首页index.html,且可以在浏览器打开index页面.
    3. 在书籍的index.html中有一个"查看所有书籍"的超链接按钮,点击进入书籍列表list.html页面.
    4. 在书籍list.html中显示所有书名,点击书名可以进入书籍详情detail.html
    5. 在书籍detail.html中可以点击该书的作者和出版社,进入作者的detail.html和出版社的detail.html页面
models.py内容如下:
    # 出版社
    class Publisher(models.Model):
        name = models.CharField(max_length=30)
        address = models.CharField(max_length=100)
        city = models.CharField(max_length=30)
        state_province = models.CharField(max_length=30)
        country = models.CharField(max_length=20)
        website = models.URLField()
        
    # 作者
    class Author(models.Model):
        first_name = models.CharField(max_length=30)
        last_name = models.CharField(max_length=30)
        email = models.EmailField()
        gender = models.BooleanField(default=True)
    # 书籍
    class Book(models.Model):
        title = models.CharField(max_length=100)
        author = models.ForeignKey(Author)
        publishers = models.ManyToManyField(Publisher)
        publish_date = models.DateField()
使用admin后台系统之前,需要先创建一个系统管理员,创建管理员之前需先同步数据库。
    python manager.py createsuperuser
设置为中文
    settings中LANGUAGE_CODE = 'zh-hans'
设置时间,时区
    TIME_ZONE='Asia/Shanghai'
添加自己的数据模型,在admin.py中注册: 
    admin.site.register(Publisher)
    admin.site.register(Author)
    admin.site.register(Book)
在admin中给model添加数据。
给模型加上__str__函数,比如给Author模型添加str函数,让author的显示更加友好:
    def __str__(self):
        return '%s %s' % (self.first_name, self.last_name)
希望控制admin中添加model数据时的动作,可以修改相应字段的属性。
比如author的email字段运行添加的时候为空,可以在email字段定义中加上 blank=True(可以空白),
比如book的publication_date添加 blank=True, null=True(可以为null)属性。
修改models属性之后记得及时做数据迁移。
使用verbose_name属性指定字段的别名:
    比如给publisher的name字段指定一个中文的别名verbose_name='出版社名称'。
    在models的修改页面,默认显示的是models定义的str函数返回的字符串。
            

3. 定制admin

通过定义MoldelAdmin来定制model在admin的表现。比如给Author定义AuthorAdmin。

    class AuthorAdmin(admin.ModelAdmin):
        list_display = ('first_name', 'last_name', 'email')
    相应的注册代码也要变化:
    admin.site.register(Author, AuthorAdmin)
给Author添加一个搜索框:
    search_fields = ('first_name', 'last_name')
给book添加一个过滤器
    list_filter = ('publication_date',)
    过滤器不光可以作用在日期字段上,还可以作用在boolean类型和外键上。
    另一种增加日期过滤的方式:
    date_hierarchy = 'publication_date'
字段排序:
    ordering = ('-publication_date',)
修改编辑页面显示的字段及显示顺序,默认按照models中字段的定义顺序显示:
    fields = ('title', 'authors', 'publisher', 'publication_date')
与fields相反的字段是exclude
    exclude = ['publication_date',] 
改善多对多关系中对象选择操作,比如给BookAdmin添加如下属性:
    filter_horizontal = ('authors',)
filter_horizontal和filter_vertical 选项只适用于多对多关系。
一对多的外键关系,admin使用select box下拉菜单来表示。如不想用select box,可添加如下属性,让原来一次性加载所有publisher的select box变成填写publisher的id:
    raw_id_fields = ('publisher',)
让字段分组显示,fieldsets和上面提到的field不能同时出现:
    fieldsets = (
        ('作者', {'fields': ('authors',)}),
        ('出版商', {'fields': ('publisher',)}),
    )
定制list_display字段的显示。比如给Author加一个布尔型gender字段,来表示性别。为了让显示更加人性化:
    # 定制显示属性
    def showgender(self):
        if self.gender:
            return '男'
        else:
            return '女'
    list_display = ('first_name', 'last_name', 'email', showgender)
给该函数设置简短描述,让显示更加友好:
    showgender.short_description = '性别'
可以将modeladmin的属性简单划分为列表页属性和添加、修改页属性
# 列表页属性
list_display,list_filter,search_fields,list_per_page等
# 添加、修改页属性
fields ,fieldsets, filter_horizontal, raw_id_fields等

转载于:https://www.cnblogs.com/gugubeng/p/9723360.html

django (三) admin后台系统相关推荐

  1. django admin后台系统

    Django中默认集成了后台数据管理页面,通过简单的配置就可以实现模型后台的Web控制台. 管理界面通常是给系统管理员使用的,用来完成数据的输入,删除,查询等工作. 使用以下models来示范admi ...

  2. Django项目的创建、Admin后台系统以及数据库迁移

    PyCharm新建一个Django项目: 新建项目  ->  Django项目 -> 选择创建位置.项目名.应用名(应用名与项目名不能相同) -> 选择创建Create 创建项目后, ...

  3. Django(part31)--admin后台数据库管理

    学习笔记,仅供参考 文章目录 admin后台数据库管理 使用步骤 自定义后台管理数据表 配置步骤 模型管理器类 模型管理器的使用方法 ModelAdmin模型管理器类中的高级管理功能 数据库表管理 修 ...

  4. Django框架admin后台数据库管理

    创建超级用户 django 提供了比较完善的后台管理数据库的接口,可供开发过程中调用和测试使用 django 会搜集所有已注册的模型类,为这些模型类提拱数据管理界面,供开发者使用 使用步骤: 创建后台 ...

  5. django里面的css无法加载,django使用admin后台,一部分 css和js文件无法加载-无法打开文件...

    解决使用admin功能时, 一部分 css和js文件无法加载 原因是由settings.py修改debug = true 为 debug =false 引起的, 1.在settings.py添加如下 ...

  6. Python Django 配置admin后台管理类代码示例

  7. Python Django 通过admin后台创建表数据

  8. python的django后台管理_python测试开发django-17.admin后台管理

    前言 通常一个网站开发,需要有个后台管理功能,比如用后台管理发布文章,添加用户之类的操作.django的admin后台管理主要可以实现以下功能 基于admin模块,可以实现类似数据库客户端的功能,对数 ...

  9. admin后台管理系统(二)

    admin后台系统的二次开发 会成功安装基础Django admin后台系统管理(一) admin后台系统管理(三) 创建应用并添加到项目中 创建模型并注册到后台 创建模型 from django.d ...

最新文章

  1. PPStream、PPlive等播放器花屏之解决办法
  2. 纪念逝去的头发--一次debug经历
  3. 基于网络音频的Android播放程序简单示例
  4. Android画布的保存,Android canvas用法介绍之save()和restore()
  5. ubuntu ls命令
  6. leetcode 1600. 皇位继承顺序(dfs)
  7. 数论考试题(b) 求约数的约数的最大个数
  8. mysql执行ref_MySql执行分析
  9. [转载] Python大数据文本分析及应用
  10. [转载] 【python】定义带参数的装饰器,用装饰器限制函数的参数类型
  11. java strtus2 DynamicMethodInvocation配置(二)
  12. java软考 试题_软考程序员下午考试试题练习
  13. windows操作系统定时关机和取消定时关机命令
  14. 51单片机-矩阵键盘
  15. 拉格朗日插值法与牛顿插值法
  16. ARM V8 SPEC B1 AArch64 Application level programer‘s Model
  17. 带你开发一款给Apk中自动注入代码工具icodetools(完善篇)
  18. 电商产品设计:拆单规则和业务场景详解
  19. 曲线之美(一)贝塞尔曲线
  20. Oracle EBS R12 整合ADF

热门文章

  1. 谷歌五笔输入法电脑版_“五笔输入法”打字速度更快,为什么却没啥人用?
  2. ccxprocess可以禁用么_提效 | 5G时代网站还需要加速么?
  3. Qt 多线程并发高阶类QtConcurrent 的使用
  4. 改变图标颜色_LOL设计师宣布修改装备图标:提高清晰度、颜色差异化
  5. 电脑技巧:键盘上的这几个键,不常用,但有必要了解一下!
  6. 计算机系统基础:总线结构知识笔记
  7. php 直播服务器搭建,基于Nginx搭建RTMP/HLS视频直播服务器
  8. 怎样获取当前页面值php,想要得到当前页面的所有url参数信息怎么用PHP来实现?...
  9. html为什么要进行表单验证_化学锚栓为什么要进行拉拔试验?
  10. 小程序内嵌h5页面分享_微信小程序webview内页面分享