DjangoAdmin管理工具
Posted 礁之
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DjangoAdmin管理工具相关的知识,希望对你有一定的参考价值。
文章目录
此文章参考菜鸟教程:Django Admin 管理工具 | 菜鸟教程 (runoob.com)
Django版本:
>>> django.VERSION
(4, 1, 0, 'final', 0)
PS:基于前几章的进度进行修改
一、概述
-
使用Django Admin可以快速对数据库的各个数据表进行增删查改。
一行代码即可增加对一个模型(数据表)的增删查改。
试想如果你要自己手动编写后台对一个模型进行增删查改,你一般需要4个urls, 4个视图函数或通用视图和4个模板。当一个项目比较大包含多个app时,而每个app又包含多个模型
(数据表)
时, 那么编写和维护整个项目管理后台的工作量可想而知。Django Admin所做就是将所有需要管理的模型(数据表)集中在一个平台,你不仅可以选择性地管理模型(数据表), 你还可以快速订制数据条目查询,过滤和搜索条件。
-
Django提供了基于Web的管理工具,这个管理工具是
django.contrib
的一部分,可以在项目的settings.py
中的INSTALLED_APPS
看到 -
django.contrib
是一套庞大的功能集,它是Django基本代码的组成部分
- /helloworld/helloworld/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'TestModel',
]
二、使用管理工具
(1)激活管理工具
- 在生成项目时,urls.py文件会自动设置好管理工具,资源路径为
admin/
,只需要去掉注释即可
- helloworld/urls.py
#-*- coding: utf-8 -*-
from django.urls import path,include
from django.contrib import admin
urlpatterns = [
path('admin/',admin.site.urls),
]
- 启动Django
- 访问
127.0.0.1:8000/admin/
- 我们可以通过命令
python manage.py createsuperuser
创建超级用户:
(test) PS F:\\django\\helloworld> python .\\manage.py createsuperuser
用户名 (leave blank to use 'root'): admin #输入用户名
电子邮件地址: admin@163.com #邮箱地址
Password: #密码123456.com
Password (again):
Superuser created successfully.
(test) PS F:\\django\\helloworld> python .\\manage.py runserver 0.0.0.0:8000 #启动
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
September 02, 2022 - 16:09:39
Django version 4.1, using settings 'helloworld.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CTRL-BREAK.
- 再次访问
127.0.0.1:8000/admin
,输入刚刚创建的用户名密码
(2)使用管理工具
- 成功进入后,发现没任何数据表,这是因为还需要注册该数据模型到
admin
,现在先创建数据表
注意:需要先连接到mysql数据,可以参考之前模型那章
(test) PS F:\\django\\helloworld> django-admin startapp TestModel #创建数据模型,数据模型为TestModel
(test) PS F:\\django\\helloworld> ls
目录: F:\\django\\helloworld
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2022/8/17 14:17 helloworld
d----- 2022/8/18 10:45 static
d----- 2022/8/17 14:17 templates
d----- 2022/8/18 13:57 TestModel #创建了一个TestModel的目录
-a---- 2022/8/17 10:49 0 db.sqlite3
-a---- 2022/8/17 10:49 688 manage.py
(test) PS F:\\django\\helloworld> cd TestModel #进入目录
(test) PS F:\\django\\helloworld\\TestModel> ls #查看目录结构
目录: F:\\django\\helloworld\\TestModel
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2022/8/18 13:57 migrations
-a---- 2022/8/18 13:57 66 admin.py
-a---- 2022/8/18 13:57 156 apps.py
-a---- 2022/8/18 13:57 60 models.py
-a---- 2022/8/18 13:57 63 tests.py
-a---- 2022/8/18 13:57 66 views.py
-a---- 2022/8/18 13:57 0 __init__.py
- 修改Model文件
from django.db import models
class Aaa(models.Model): #创建数据表,最终表名称为TestModel_aaa
name = models.CharField(max_length=20) #两个字段,name和age,最终创建出还有一个id的主键字段
age = models.CharField(max_legth=3)
- 修改主app的settings.py文件
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'TestModel', #添加新的app
]
- 执行修改操作
(test) PS F:\\django\\helloworld> python manage.py migrate #执行对模型修改的操作
- 执行上面的命令后,查看mysql数据库,可以发现已经创建了数据表
mysql> show tables;
+----------------------------+
| Tables_in_test |
+----------------------------+
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session |
+----------------------------+
10 rows in set (0.00 sec)
- 下面来创建TestModel模型的表
(test) PS F:\\django\\helloworld> python manage.py makemigrations TestModel #对操作进行记录,后面可以指定模型
#输出:
- Create model Aaa
(test) PS F:\\django\\helloworld> python manage.py migrate TestModel #执行对指定模型的修改
#输出:
Applying TestModel.0001_initial... OK
- 再次查看数据库,发现创建了TestModel_aaa 表
mysql> show tables;
+----------------------------+
| Tables_in_test |
+----------------------------+
| TestModel_aaa | #创建的表
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session |
+----------------------------+
11 rows in set (0.00 sec)
- 查看表结构,可以看到 id 字段为主键
mysql> show create table TestModel_aaa;
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| TestModel_aaa | CREATE TABLE `TestModel_aaa` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`age` varchar(3) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> describe TestModel_aaa;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment | #主键自动增长
DjangoAdmin管理工具