一.项目介绍:
使用
Django
完成基本流程的开发,学习
Django 的主要的知识点,
本次入门以图书管理系统为示例 , 实现图书管理的基本功能。
二.项目的创建与运行
1.自动生成建立
Django
从命令行
cd
到您要存储代码的目录,然后运行以下命令:
django
-
admin startproject BookManage
在线安装
Django,
指定版本安装
pip install django -i https://pypi.douban.com/simple
目录说明
:
manage.py
:一个命令行工具,可以使你用多种方式对
Django
项目进行交互
内层的目录:项目的真正的
Python
包
__init__.py
:一个空文件,它告诉
Python
这个目录应该被看做一个
Python
包
settings.py
:项目的配置
urls.py
:项目的
URL
声明
wsgi.py
:项目与
WSGI
兼容的
Web
服务器入口
三.应用的创建与使用
1.创建第一个应用程序
Django
自带一个实用程序,可以自动生成应用程序的基本目录结构,因此您可以专注于编写代码而不
是创建目录。
在一个项目中可以创建一到多个应用,每个应用进行一种业务处理
创建应用的命令:
python3 manage
.
py startapp bookApp
2.
编写第一个视图函数
bookApp/views.py
![](https://i-blog.csdnimg.cn/blog_migrate/a6ed435e6c6fac463cf57b7e49ef172b.png)
3.
路由规则
在
bookApp
目录中创建一个
URLconf
,创建一个名为
urls.py
。
根据配置文件
BookManage/settings
可知路由查找的主文件FirstDjango
/urls.py
, 因此在该文件添加一条 url
规则:
include()
函数允许引用其他
URLconfs
。
![](https://i-blog.csdnimg.cn/blog_migrate/11a70603149bb5774587874af3685c8a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7b2cbaf79006a9baa78b4a99a98dcaaa.png)
4.
效果展示
启动服务器
python3
manage.py runserver
访问
url
地址
:
http:// 127.0.0.1:8000/book/
如果看到主页内容
图书管理系统
即成功。
![](https://i-blog.csdnimg.cn/blog_migrate/769347d35f52303028b10e1acf0467c9.png)
url()
函数介绍
Django url()
可以接收四个参数,分别是两个必选参数:
regex
、
view
和两个可选参数: kwargs 、
name
。
regex
:
正则表达式,与之匹配的
URL
会执行对应的第二个参数
view
。
view
:
用于执行与正则表达式匹配的
URL
请求。
kwargs
:
视图使用的字典类型的参数。
name
:
用来反向获取
URL
四: 项目的数据库模型
1. 添加mysql数据库配置
Django
支持的数据库包括:
sqlite
、
mysql
等主流数据库
Django
默认使用
SQLite
数据库
Django
数据库设置参考文档
其中
ENGINE
设置为数据库后端使用。内置数据库后端有:
'django.db.backends.postgresql'
'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'
![](https://i-blog.csdnimg.cn/blog_migrate/800aeda8f9b08a9b4e063c3dcf9c1076.png)
2
.
创建数据库模型
本示例完成
“
图书
-
英雄
”
信息的维护,需要存储两种数据:图书、英雄
图书
-
英雄的关系为一对多
![](https://i-blog.csdnimg.cn/blog_migrate/72d1715e7cadd7ffc48ab4358a7d84ac.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ca379d1f9f32c00fde18d867434189ca.png)
3.
生成数据库表
激活模型
:编辑
settings.py
文件,将应用加入到
INSTALLED_APPS
中
生成迁移文件
:根据模型类生成
sql
语句
python manage
.
py makemigrations
![](https://i-blog.csdnimg.cn/blog_migrate/832bb559d1df0fe27123d2b715cd06e3.png)
执行迁移
:执行
sql
语句生成数据表
python manage
.
py migrate
数据库中查看数据库表是否创建成功
?
![](https://i-blog.csdnimg.cn/blog_migrate/f19688506555745dffef00ca775bde61.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f94994b950fbd3105e490f2794698877.png)
4
.
数据库模型基本操作
现在进入交互式的
Python shell
,并使用
Django
提供的免费
API
python manage
.
py shell
引入需要的包:
from
bookApp
.
models
import
Hero
,
Book
查询所有图书信息:
Book
.
objects
.
all
()
新建图书信息:
from
datetime
import
datetime
book
=
Book
(
title
=
"
射雕英雄传
"
,
pub_date
=
datetime
(
year
=
1990
,
month
=
1
,
day
=
10
))
book
.
save
()
修改图书信息:
book
.
title
=
"
天龙八部
"
book
.
save
()
删除图书信息:
book
.
delete
()
![](https://i-blog.csdnimg.cn/blog_migrate/ae0f95586aeeeace637da91421792a05.png)
五: 启用后台Admin 站点管理
站点分为
“
内容发布
(
后台管理
)”
和
“
公共访问
(
前台管理
)”
两部分
“
内容发布
”
的部分负责添加、修改、删除内容,开发这些重复的功能是一件单调乏味、缺乏创造力
的工作。
因此,
Django
会根据定义的模型类完全自动地生成管理模块
Django
框架中有一个非常强大的应用功能
:
自动管理界面。 常被
Web
平台管理者使用,去管理整个Web平台
默认情况下,在
settings.py
配置文件中
INSTALLED_APPS
包含以下应用程序,为了后续的开发,默
认这些
应用程序都是包含在里面的。
1.数据库迁移
使用这些
Django
自带的应用程序,需要我们在数据库中创建一些数据表对应,然后才能使用它们。
python manage.py makemigrations
python manage.py migrate
2. 创建管理员用户
启动服务器,通过
“127.0.0.1:8000/admin”
访问,输入上面创建的用户名、密码完成登录
进入管理站点,默认可以对
groups
、
users
进行管理
![](https://i-blog.csdnimg.cn/blog_migrate/22812904d0fbcbf5314794c7719b2ff2.png)
3.
管理界面本地化
编辑
settings.py
文件,设置编码、时区
![](https://i-blog.csdnimg.cn/blog_migrate/54a40de5b0c54502997a4c36e6b1c70d.png)
4.自定义模型加入后台管理
打开
bookApp/admin.py
文件,注册模型
刷新管理页面,可以对
Book
的数据进行增删改查操作
;
![](https://i-blog.csdnimg.cn/blog_migrate/21d8759def9f55546a2c241a672f2af5.png)
问题一:
python2
版本中
,
如果在
str
方法中返回中文,在修改和添加时会报
ascii
的错误
在
str()
方法中,将字符串末尾添加
“.encode('utf
-
8')”
进行字符串编码
5.
自定义管理页面
Django
提供了
admin.ModelAdmin
类
通过定义
ModelAdmin
的子类,来定义模型在
Admin
界面的显示方式
![](https://i-blog.csdnimg.cn/blog_migrate/2840414cf4724ebe1df792b3fc740004.png)
(1).列表页属性性
list_display
:显示字段,可以点击列头进行排序
list_fifilter
:过滤字段,过滤框会出现在右侧
search_fifields
:搜索字段,搜索框会出现在上侧
list_per_page
:分页,分页框会出现在下侧
(2).添加、修改页属性
fifields
:属性的先后顺序
fieldsets
:属性分组, 注意
:
fields
和
fieldsets
只能设置一个
.
(3)关联对象
对于
Hero
模型类,有两种注册方式
方式一:与
Book
模型类相同
方式二:关联注册
admin.StackedInline
:
内嵌关联注册类
admin.TabularInline
:
表格 关联注册类
![](https://i-blog.csdnimg.cn/blog_migrate/8dd38947404bb9cbcdab782711ed56db.png)
(4)布尔值的显示
发布性别的显示不是一个直观的结果,可以使用方法进行封装
![](https://i-blog.csdnimg.cn/blog_migrate/163624eb449329720011dc9a2d99fc3d.png)
在
admin
注册中使用
sex
代替
gender
![](https://i-blog.csdnimg.cn/blog_migrate/4db1a4950ca8fcfb7fefcf1c0db1cb78.png)