1. 虚拟环境安装django环境(Mac)
- 创建虚拟环境
conda create --name django_env python=3.7 # 后面需要加python版本,否则创建的虚拟环境无法使用而且无法通过'conda remove -n name --all'删除,只能在/anaconda3/envs中删除环境
python3.7使用该版本django有问题,后台添加注册模型实体时报错,具体下面有截图,所有还是趁早使用3.6吧。
- 删除虚拟环境(如果需要)
conda remove -n nev_name --all
- 进入django环境
conda activate
- 安装django包
pip install django==1.8.2
2. 创建项目
django中,项目结构一般为一个项目包含多个应用,一个应用为一个业务模块。以常见的图书和任务关系案例为例:
cd ~/Desktop
django-admin startproject bookmanager # 创建项目
- 用pycharm打开桌面上的bookmanager,可以看到项目结构为:
- django项目结构.png
- 项目结构说明:
- manage.py:项目管理文件,通过它管理项目;
- bookmanager:和项目同名的文目录
- __ init __.py:空文件,表明bookmanager可以当包使用;
- settings.py:项目整体配置文件;
- urls.py:项目的url配置文件;
- wsgi.py:项目与兼容WSGI的web服务器的入口;
cd bookmanager
-
python manage.py startapp book
- 应用结构.png
- 应用结构说明:
- migrations:数据库迁移文件目录;
- __ init __.py:空文件,表明book可以当包使用;
- admin.py:网站后台管理使用;
- models.py:项目数据库操作使用;
- tests.py:测试使用;
- views.py:视图文件;
- 项目中添加应用
- 添加应用.png
- 启动项目
python manage.py runserver ip:port # 不指定ip:port也可以,默认127.0.0.1:8000
-
启动成功.png成功页面.png
3. 模型设计
django中内嵌了ORM框架,使用步骤:
- 在model.py中定义模型类
- 迁移
- 通过类和对象完成数据增删改查
3.1 定义模型类
在model.py中定义模型类,继承自models.Model类。定义模型类中,主键一般不用定义,会自动添加并设置为自动增长(根据实际使用确认是否自己定义主键)。定义模型类.png
3.2 迁移
- 生成迁移文件:
python manage.py makemigrations
- 执行迁移:
python manage.py migrate
生成迁移文件前.png生成迁移文件成功.png生成迁移文件后.png0001_initial内容.png
执行迁移成功.pngdb.sqlite3.png
- 可以看出默认表名为应用名_类名:book_bookinfo。
生成迁移文件.png生成迁移文件后.png0002_heroinfo内容.png迁移成功.pngdb.sqlite3.png- 注意一对多外键定义在多类中。表中字段名默认为属性名_id。
3.3 shell介绍
python manage.py shell # 进入shell窗口
from book.models import BookInfo, HeroInfo
from datetime import date
BookInfo.objects.all() # 查询图书列表
# 增加图书数据
b = BookInfo()
b.btitle = '西游记'
b.bput_date = date(1990, 1, 1)
b.save()
# 增加人物数据
h = HeroInfo()
h.hname = '孙悟空'
h.hgender = False
h.hcomment = '看我七十二变'
h.hbook = b
h.save()
# 关联查询
b.heroinfo_set.al()
4. 后台管理
- 管理界面本地化
- 创建管理员
- 注册模型类
- 自定义管理页面
4.1 管理界面本地化
项目配置文件settings.py中设置:后台管理界面本地化设置.png
4.2 创建管理员
python manage.py createsuperuser
登陆后台后,没有图书和任务类:首次登陆后台管理.png
4.3 注册模型类
book下面admin.py中注册模型类:注册模型类.png
注册后刷新页面:注册后后台页面.png
点击增加时,报错:后台管理新增模型时保持.png
查询原因为python3.7版本使用时这里会出问题,坑,换3.6从头走一遍(正好上面的bpub_date也写成了bput_date)。
更换3.6虚拟环境后重新走到这一步,注册的模型可以在此增加删除修改,python自动根据模型类的不同生成不同的表单控件。如:不同表单控件.png
4.4 自定义管理页面
可以看出默认列表展示只展示一列且很不直观:默认展示.png
自定义管理页面:
- admin.py中自定义类,继承自admin.ModelAdmin,属性list_display表示要显示那些属性(必须是属性名);
修改注册模型方法;
修改注册模型.pngSnip20190630_69.png
5. 视图
django视图必须有一个参数(一般就叫request),视图必须返回HttpResponse对象。视图定义在view.py中。
5.1 定义视图
定义视图.png
5.2 配置URL
- 在应用中定义URLConf(在book下创建urls.py):
应用中配置url.png
- 包含到项目的URLConf中:
包含到项目中.png
视图响应结果.png
6. 模板
一般在项目根路径下创建templates文件夹,然后在templates文件夹下创建应用名同名的文件夹,然后创建前端文件。前端位置.png
- settings.py里面配置:
配置模板路径
- 定义模板:
自定义模板.png
- 视图调用模板
- 找到模板
- 定义上下文
- 渲染模板
模板使用.png
Snip20190630_82.png- 调用模板简写:使用render
使用render调用模板.png
7. 完整图书人物案例
- 页面:
图书列表页.png人物信息页.png视图.png路由.png
图书列表.png人物信息.png