0%

django后台管理的基本使用

准备工作

对于初学python想要开发网站,我一般推荐django,其中一个很重要的原因就是它提供了一个网站管理模块,这个能够省去很多工作。下面我讲讲如何使用这个管理后台。

一般来说,我们创建一个项目HelloWorld,那么该项目下的目录与文件如下图所示:

1
2
3
4
5
6
|-- HelloWorld
| |-- __init__.py
| |-- settings.py
| |-- urls.py
| `-- wsgi.py
`-- manage.py

这里几个文件的作用如下:

  • HelloWorld: 项目的容器。
  • manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
  • HelloWorld/init.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
  • HelloWorld/settings.py: 该 Django 项目的设置/配置。
  • HelloWorld/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站”目录”。
  • HelloWorld/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。

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

1
2
3
4
5
6
7
8
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
)

为了激活自动管理工具,我们需要在urls.py中添加:

1
2
3
urlpatterns = [
path('admin/', admin.site.urls),
]

做好上述准备后,启动开发服务器,然后在浏览器中访问 http://127.0.0.1:8000/admin/,就会有一个登录窗口出现,这个表明后台管理工具已经可以使用了。

为了创建管理账号,我们需要在命令号运行python manage.py createsuperuser 来创建超级用户。

到此为止,后台管理工具已经可以用了。

设置中文界面

django后台默认是英文界面,对于中文用户来说就不方便了,这里只要在settings.py 中 把LANGUAGE_CODE = ‘en-us’改成LANGUAGE_CODE = ‘zh-Hans’即可。

顺便把设置TIME_ZONE = ‘Asia/Shanghai’ 。

model准备

最近要为学科评估开发一个信息系统,所以在项目目录下添加models.py文件,并在其中添加了相应的数据模型,其中大部分都是如下样子。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class user(models.Model):
username = models.CharField(verbose_name='用户名',max_length=50)
password = models.CharField(verbose_name='密码',max_length=50)
name = models.CharField(verbose_name='姓名',max_length=50)
email = models.CharField(verbose_name='Email',max_length=50)
lastLogin=models.DateField(verbose_name='最近登录')
class Meta:
# 指定数据表名称
# db_table = 'wang_user'
# 指定模型在后台显示的名称
verbose_name = '用户'
# 去除后台显示的名称默认添加的 's'
verbose_name_plural = verbose_name

class td(models.Model):
tdlb = models.CharField(verbose_name='团队类别',max_length=50)
tdmc = models.CharField(verbose_name='团队名称',max_length=50)
xsdtr = models.CharField(verbose_name='学术带头人',max_length=50)
dtrcsny = models.CharField(verbose_name='带头人出生年月',max_length=50)
zzje = models.FloatField(verbose_name='资助金额')
zznx = models.CharField(verbose_name='资助年限',max_length=50)
bz = models.CharField(verbose_name='备注',max_length=50)
class Meta:
# 指定数据表名称
# db_table = 'wang_td'
# 指定模型在后台显示的名称
verbose_name = '团队'
# 去除后台显示的名称默认添加的 's'
verbose_name_plural = verbose_name

这里的verbose_name主要是为了后台管理界面中把相应的列名变成这里指定的名称,否则会直接显示列名

内部类Meta可以认为是为这个类的一些显示与数据库操作服务的,这里的db_table是用于指定自动生成数据表时的表名,verbose_name指定这个类在显示的时候的名称,verbose_name_plural是用到复数时候自动会添加s,这里我们改变它的行为,直接用类的名称来替代,因为中文里没有单复数的概念。

创建好模型后,按这些模型创建数据表,执行下列命令:

1
2
$ python manage.py makemigrations HelloWorld  # 让 Django 知道我们在我们的模型有一些变更
$ python manage.py migrate HelloWorld # 创建表结构

注册model

做好上述准备后,最后还要在项目目录下添加admin.py,并在其中注册上面写的model。

1
2
3
4
5
6
from django.contrib import admin
from HelloWorld.models import user,td

# Register your models here.
admin.site.register(user)
admin.site.register(td)

到这里为止,我们就可以在后台管理里面去添加、删除、修改、查找这些model所对应的信息了。

接下来的问题就是,很多添加、修改、删除以及查找的界面都是默认的,很多不是我们希望的样子,所以接下来就是如何来定制admin后台管理界面了,这些我们另外再写。