第1章 MVC框架介绍
MVC全名是Model View Controller,是软件工程中的一种软件架构模式。把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等优点。
第2章 MTV框架介绍
Django框架的设计模式借鉴了MVC框架的思想,也是分成三部分来降低各个部分之间的耦合性。
Django框架的不同之处在于它拆分的三部分为:Model(模型)、Template(模板)和View(视图),也就是MTV框架。
- Model(模型):负责业务对象与数据库的对象(ORM)
- Template(模版):负责如何把页面展示给用户
- View(视图):负责业务逻辑,并在适当的时候调用Model和Template
此外Django还有一个urls分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template
第3章 Django介绍
3.1 安装Django
3.1.1 命令行安装
pip3 install django==1.11.9
3.1.2 PyCharm安装
3.2 创建Django项目
3.2.1 命令行创建
django-admin startproject mysite
3.2.2 Pycharm创建
3.2.3 目录结构介绍
mysite/ ├── manage.py # 管理文件 └── mysite # 项目目录 ├── __init__.py ├── settings.py # 配置 ├── urls.py # 路由:URL和函数的对应关系 └── wsgi.py # runserver命令就使用wsgiref模块做简单的web server
3.3 运行Django项目
3.3.1 命令行方式
python manage.py runserver 127.0.0.1:8000
3.3.2 Pycharm方式
3.4 Django项目初始化
3.4.1 配置模板文件
3.4.2 配置静态文件路径
STATIC_URL = '/static/' # 静态文件保存目录的别名,名字可以自定义 STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), # 静态文件(css/js/图片)存放位置 ]

3.4.2.1 静态文件查找原理
3.4.3 禁用csrf中间件(仅测试时使用)
3.4.4 添加web三件套
from django.shortcuts import HttpResponse, render, redirect

3.4.4.1 HttpResponse
【作用】:内部传入一个字符串参数,返回给浏览器。
【示例】:
def index(request): # 业务逻辑代码 return HttpResponse("OK")
3.4.4.2 render
【作用】:除request参数外还接受一个待渲染的模板文件和一个保存具体数据的字典参数,将数据填充进模板文件,最后把结果返回给浏览器。
【示例】:
def index(request): # 业务逻辑代码 return render(request, "index.html", {"name": "alex", "hobby": ["篮球", "足球"]})
3.4.4.3 redirect
【作用】:接受一个URL参数,表示跳转到指定的URL。
【示例】:
def index(request): # 业务逻辑代码 return redirect("/admin/")
3.5 创建APP
一个Django项目可以分为很多个APP用来隔离不同功能模块的代码。
3.5.1 命令行创建
python manage.py startapp app02
3.5.2 PyCharm创建
手动在下方弹出的命令窗口输入:
startapp app02
第4章 问题总结
4.1 UnicodeEncodeError
【错误描述】:Django 启动时报错 “UnicodeEncodeError ...”
【错误原因】:通常是因为计算机名为中文
【解决方法】:改成英文的计算机名重启下电脑就可以了
4.2 SyntaxError: Generator expression must be parenthesized
【错误描述】:Django 启动报错“SyntaxError: Generator expression must be parenthesized”
【错误原因】:很大可能是因为使用了Python3.7.0,而目前(2018-06-12)Python3.7.0和Django还有点兼容性问题
【解决方法】:换回Python3.6的环境即可
第5章 参考资料
https://www.cnblogs.com/liwenzhou/p/8258992.html
