1. 程式人生 > >Django的admin組件

Django的admin組件

query ger address model primary .com ons migration isbn

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")

Django的admin組件