zoukankan      html  css  js  c++  java
  • Django的admin组件

    1、Django项目中的admin app

      Django 提供了基于 web 的管理工具。

      Django 自动管理工具是 django.contrib 的一部分。你可以在项目的 settings.py 中的 INSTALLED_APPS 看到它:

    # Application definition
    
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app01'
    ]

     2、启动admin管理工具

      Django功能默认已经对admin的路由进行了配置。在urls.py中,如下:

    from django.contrib import admin
    from django.urls import path
    
    urlpatterns = [
        path('admin/', admin.site.urls),
    ]

    3、使用admin

    3.1、在使用admin之前,先创建mysql数据库:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'book_info',
            'HOST': 'localhost',
            'PORT': 3306,
            'USER': '用户名',
            'PASSWORD':'密码',
        }
    }

    3.2、并配置pymysql

      在工程目录"__init__.py"中配置pymysql:

    import pymysql
    
    pymysql.install_as_MySQLdb()

    3.4、在app01中定义数据表

    from django.db import models
    
    # Create your models here.
    
    class Publisher(models.Model):
        id = models.AutoField(primary_key=True)
    
        name = models.CharField(max_length=64,unique=True)
    
        # def __str__(self):
        #     return self.name
    
    
    
    class Book(models.Model):
        id = models.AutoField(primary_key=True)
        isbn = models.BigIntegerField(null=False,unique=True)
        name = models.CharField(max_length=64)
        price = models.FloatField(null=False)
        url = models.CharField(max_length=128)
    
        publish = models.ForeignKey(
            to="Publisher",
            to_field="id",
            related_name="books",
            # related_query_name="book_q",
            on_delete=models.CASCADE)
    
        pub_date = models.DateField(null=True,blank=True)
    
    
        # def __str__(self):
        #     return self.name
    
    
    class Author(models.Model):
        id = models.AutoField(primary_key=True)
        name = models.CharField(max_length=64)
    
        book = models.ManyToManyField(to="Book")
    
        # def __str__(self):
        #     return self.name
    
    
    class Translator(models.Model):
    
        id = models.AutoField(primary_key=True)
        name = models.CharField(max_length=64,null=False)
    
        book = models.ManyToManyField(to="Book")
    
        # def __str__(self):
        #     return self.name
    View Code

    3.5、创建对象关系映射

      在终端中执行:

    python manage.py makemigrations
    python manage.py migrate

    3.6、创建超级用户

      在终端中执行:

    python manage.py createsuperuser

      输入用户名,和密码。

    3.7、在app01的admin.py中引入models中的表

    from app01.models import Book,Publisher,Author,Translator

    3.8、使用  

      想要在admin 界面管理某个数据模型(model),我们需要先将该数据模型(model)注册到 admin。

    admin.site.register(Book)
    admin.site.register(Publisher)
    admin.site.register(Author)
    admin.site.register(Translator)

    3.9、登录

      在浏览器中输入:http://127.0.0.1:8009/admin/,使用用户、密码登录,就能实现该model对应的数据表增删改查的功能。

    4、admin的定制

      如果想要进行更多的定制操作,需要利用ModelAdmin进行操作,如:

    # 注册方式1
    class PublisherAdmin(admin.ModelAdmin):
        list_display = ("name", "address")
    
    
    admin.site.register(models.Publisher, PublisherAdmin)
    
    
    # 注册方式2
    @admin.register(models.Book)
    class BookAdmin(admin.ModelAdmin):
        list_display = ("title", "price", "publish_date", "publisher")
  • 相关阅读:
    VB操作Excel
    VB二进制文件读写
    VB操作CAD
    什么是管态?什么事用户态?二者有何区别?
    什么是处理机的态?为什么要区分处理机的态?
    综合布线的一些计算题
    在设计操作系统时,可以考虑的结构组织有哪几种?
    什么是操作系统虚拟机?
    Windows、Unix、Linux是什么类型的操作系统?
    操作系统的资源管理功能有哪几个?其中,哪些功能与计算机系统的硬部件相关?
  • 原文地址:https://www.cnblogs.com/bad-robot/p/9742025.html
Copyright © 2011-2022 走看看