Django的admin组件

Posted bad-robot

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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")

 

以上是关于Django的admin组件的主要内容,如果未能解决你的问题,请参考以下文章

Django-admin组件使用

Django-admin组件使用

8.10 Django admin组件使用

Django——admin组件

Django的admin组件

Django-admin组件