189 8069 5689

Djangoweb开发系列(三)模型与管理后台-创新互联

一 前言

创新互联建站是专业的海州网站建设公司,海州接单;提供成都网站设计、网站制作、外贸营销网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行海州网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

在第(二)节介绍了模型Book的设计,实质就是在models.py里写了一个Book类,定义了变量和元数据,也就是设计数据库里对应的表应该长什么样子。就如前面所说,你可以将定义的模型类理解成数据库的一张表,类的实例对象理解成表中一行数据,类中的变量对应表中字段。Python奉行代码优先的理念,通过定义模型类,实现python代码与数据库操作的解耦,即使Python开发者不会数据库SQL,也能轻松完成数据库操作。

模型类定义完后,如何实现在数据库生成对应的表呢?如何通过Django后台管理模型呢?这就是本节要回答的问题。

二 模型迁移

迁移(migration),是一个将models.py定义的模型类映射到数据库并生成数据表的动作,主要涉及两个命令:

python manage.py makemigrations python manage.py migrate


命令说明:
1. 该命令的执行位置是在manage.py文件的同级目录;
2. 命令顺序执行,即先执行makemigrations,完成后,再执行migrate;
3. Django默认使用SQLlite,不需要做任何配置,但如果使用的其他数据库,需要预先在项目的settings.py配置、指定数据库;

可能你会疑惑,迁移为什么要搞成两步呀?
原因是这样的
makemigrations命令,带着make,该动作只是将模型改动生成到文件,默认是在项目的migrations目录下,注意此时只是生成了一个可读可编辑的文本文件,并没有对数据库进行改动,这样做的目的是,便于通过版本控制系统(如git、svn)记录、同步你对模型的修改,毕竟版本控制系统是无法和数据库打交道的。有了中间记录,就可以放心的使用migrate将改动同步到数据库了。

三 通过Admin后台管理模型

Django的省心之处就是它会基于项目模型创建一套简易的后台管理系统,通过该系统可以方便的对模型进行增删改查,虽然也被很多人诟病,Django太重、集成度太强,但既然有现成的、省事儿的,为啥还要自己造轮子呢?!

进入Admin后台管理的步骤如下:

1. 首次登录,创建一个admin站点用户,命令如下:

python manage.py createsuperuser

根据提示输入用户名、邮箱地址、密码即可。

2. 启动服务器,命令如下:

python manage.py runserver 127.0.0.1:8000

IP:端口根据实际修改,启动后,浏览器访问http://127.0.0.1:8000/admin/,就会看到管理后台界面,如图:

Django web开发系列(三)模型与管理后台
上图中管理后台登录界面的站点名字已经被我从默认的Django Administration改成图书借阅管理系统了,后面会介绍如何改。

3. 在amdin.py中使用admin.site.register()注册模型

from django.contrib import admin from django.contrib.auth.models import Group,User as AdminUser from .models import Book,User,ValidUser # Register your models here. admin.site.register(Book)

注意:
只有注册的模型才会出现在admin后台管理系统。

4. 再次进入管理后台界面,发现模型book已经出现在管理后台,如图:

Django web开发系列(三)模型与管理后台

此时,你可能会发现模型名字怎么变成图书了,还记得在(二)节中设计模型用的verbose_name = '图书'吧,就是这个效果。

四 定制Admin后台

通过上述步骤,已经可以在admin管理后台看到定义的模型了,后台页面显示和布局都是默认的,Django提供了ModelAdmin类实现对模型展示的定制,如下是对BOOK模型进行的简单定制:

@admin.register(Book) class BookAdmin(admin.ModelAdmin):     list_display = ('book_name','author_name','total_num','available_num','book_img')     #readonly_fields = ('book_name','author_name','total_num','available_num')     search_fields = ('book_name','author_name')     list_filter = ['available_num']     list_per_page = 10     admin.AdminSite.site_header = '图书借阅管理系统'     admin.AdminSite.site_title = '管理后台'


说明:
1. 直接可以按照以上代码套路定制自己的后台,首先定义一个ModelAdmin的子类BookAdmin,在该子类里定制展示效果和特性,同时使用admin.register装饰器,接收的参数就是需要定制的模型;
2. 常用定制字段说明如下:
  1) list_display: 显示在页面的字段;
  2)readonly_fields: 指定哪些字段是只读类型;
  3)search_fields: 在页面添加搜索框,且指定按哪些字段进行搜索;
  4)list_per_page: 设置每页显示多少个对象,如果超过,会进行分页;
  5)admin.AdminSite.site_header:设置站点页头
  6)admin.AdminSite.site_title: 设置页面标题
  7)list_filter:过滤页面元素

简单定制后,效果如下:

Django web开发系列(三)模型与管理后台

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文名称:Djangoweb开发系列(三)模型与管理后台-创新互联
URL标题:http://cdxtjz.cn/article/ccodgc.html

其他资讯