文章目录
Django
Django 是使用 Python 语言开发的一款免费而且开源的 Web 应用框架。在 Python 语言炽手可热的当下,Django 也迅速的崛起,在 Web 开发领域占有一席之地。基于 Python 开发的框架除了 Django 外,还有可以实现快速建站 Flask 和支持高并发处理的 Tornado ,而 Django 是最有代表性的一位,它们三者是当前最流行的 Python Web 框架。Django采用了MTV的框架模式。
命名由来
Django 是以一个名叫 Django Reinhardt 吉他手的的名字来命名的。因为程序员的世界不能缺少音乐,开发者在他的音乐中得到灵感,为了感谢纪念这位吉他手,所以 Django 的名字也由此诞生!
Django的由来
Django的由来:Django 最初是被开发用来管理劳伦斯集团旗下一些以新闻内容为主的网站。2003 年,Lawerence Journal-World 报社的 Web 开发者艾德里安和威利森开始用 Python 语言去开发应用。新闻界的快节奏使他们必须提高产品的开发速度,于是他们两个人想办法构建出了节省开发时间的框架,这个框架将能复用的组件或者模块放在一起,使开发者不必重复的工作,这是 Django 诞生的根本原因。后来他们所在的开发小组决定将这个框架发布成一个开源软件。经过发展和时间的积累,Django 有了数以万计用户和贡献者,现在 Django 成为了 Web 开发者中最流行的框架。
读音
大写字母 D 不发音,正确的发音是“栈go”。
MTV模式和MVC模式
著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器©,视图(V)三层;他们之间以一种插件似的,松耦合的方式连接在一起。模型负责业务对象与数据库的对象(ORM),视图负责与用户的交互(页面),控制器©接受用户的输入调用模型和视图完成用户的请求。
Django的MTV模式本质上与MVC模式没有什么差别,也是各组件之间为了保持松耦合关系,只是定义上有些许不同,Django的MTV分别代表:
- Model(模型):负责业务对象与数据库的对象(ORM)
- Template(模版):负责如何把页面展示给用户
- View(视图):负责业务逻辑,并在适当的时候调用Model和Template
此外,Django还有一个url分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template。
Django安装与使用命令(在命令提示符cmd下)
安装Django:
在线安装:pip install Django
手动安装: pip install Django压缩包地址
Django项目的创建:
创建项目: 切换到你所需要的目录输入django-admin startproject projectname
创建app:进入项目输入python manage.py startapp appname 或者 django-admin startapp app_name
Django项目基本结构
说明:项目名StudentAdminstration。app名index
migrations:用于生成数据迁移文件,通过数据迁移文件可自动在数据库里生成相应的数据表。
__init__.py 初始化文件。
admin.py 用于当前app的后台管理系统
models.py 定义数据库的映射类,每个类可以关联一张数据表,实现数据持久化,即MTV里的M。
test.py 用于实现单元测试
view.py 视图文件,处理功能的业务逻辑。即MTV中的V
---------
manage.py 命令行工具,使用python manage.py help可以查看该工具的指令信息
templates: 存放html。使用命令行创建的项目,需要自己创建。我这里使用的是pychram创建,所以有。
wsgi.py:WSGI,在WSGI这篇笔记中已经详细介绍。
urls.py:项目的路由设置,设置网站的具体网址。
settings.py:项目的配置文件,项目所有功能都需要在该文件中配置,但可以进行拆分
以上的文件只是基本配置,在项目实际开发过程还需要添加文件和文件夹。
拆分setting文件
创建如下文件夹settings和base.py、develop.py(测试环境)文件
将setting.py内容剪切到base.py,修改BASE_DIR
BASE_DIR = Path(__file__).resolve().parent.parent.parent
在develop.py文件导入base.py并添加下面内容
from .base import * #NOQA
DEBUG=True
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
#NOQA告诉PEP8检测工具,这个地方不需要检测。
修改manage.py
# os.environ.setdefault('DJANGO_SETTINGS_MODULE','djangoProjecttest.settings')
profile=os.environ.get('TYPEIDEA_PROFILE','develop')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoProjecttest.settings.%s'%profile)
什么时候选择Django框架
针对不同的场景选择不同的技术架构,所产生的开发成本与维护成本都不一样。在做技术选型时,应该考虑如下因素:
1. 所选是否应用广泛,是否有比较好的社区支持以及大量的用户反馈。
2. 所选所提供的功能是否能够契合业务需要,从而减少重复造轮子。
3. 自己是否熟悉所选,是否能解决大部分问题。
内容驱动型的项目可以考虑使用Django来做。大一点的项目要考验python能力和代码组织或设计能力,如果你对其他微型框架不熟悉同样可以考虑用Django。如果只是几个页面的小项目使用微型框架足矣。
Django的编码风格
- 引用顺序
#标准库
import json
#第三方库
import bcrypt
#Django内置函数
from django.http.response import (
Http404, HttpResponse, HttpResponseRedirect
)
#loacl Django
from .models import *
NUMBER=12
- 模板风格
{{ NUMBER }}#正确
{{NUMBER}}#错误
- View中的编码规范
function view中参数命名使用request - model中的编码规范
1. 字段使用小写加下划线命名。
2. 定义顺序
字段定义
自定义managers属性
class Meta定义
def __str__方法
def save方法
def get_absolute_url方法
其他方法定义
3. choices字段的用法
用到了带有choices参数的字段,choices定义必须大写。
注:每个定义之间空一行
Django的组成结构
其主要由以下几部分组成
1. 管理工具:一套内置的创建站点、迁移数据、维护静态文件的命令工具
2. 模型Model:提供数据访问接口和模块,包括数据字段、元数据、数据关系等的定义操作。
3. 视图View:Django的视图层封装了HTTP Request 和Response的一系列操作和数据流,器主要功能包括URL映射机制、绑定模板等。
4. 模板Template:是一套Django自己的页面渲染模板语言。
5. 表单Form:通过内置的数据类型和控件生成HTML表单
6. 管理站Admin:通过声明需要管理的Model,快速生成后台数据管理网站。
概念补充
轮子
轮子就是一种现成的通用函数,或已有的开源代码、库、框架等,能够重复使用,以减少不必要的重复工作。
参考书籍:《Django企业开发实战》、《Django web 应用开发实战》、《python高效开发实战》等。