当你考虑开发现代化、高效且可扩展的网站和Web应用时,Django是一个强大的选择。Django是一个流行的开源Python Web框架,它提供了一个坚实的基础,帮助开发者快速构建功能丰富且高度定制的Web应用
完整版笔记直接地址: 请移步这里
共 10 章,31 子模块,总计 18647 字
工程搭建
学习目标
- 掌握虚拟环境使用
- 掌握Django项目和应用的创建
- 掌握Django项目的运行
- 掌握Django视图和模板的初步使用
视图模板初步使用
Django中的视图
- 同Flask框架一样,Django也使用 视 图 来编写Web应用的业务逻辑。
- Django的视图也就是一个函数,可称为 视 图函数
- 视 图 定义在应用的
views.py
文件中的 - 视 图 需要绑定一个URL地址(路由),才能被django框架找到并调用执行
一、视图初步使用
需求: 编写视图并配置URL(路由),实现一个显示界面
1. 需求: 当在浏览器中访问URL地址 `ht://127.0.0.1:8000/users/index` 时,显示 `hello django` 信息
2. 实现:
1. 需要编写一个视图函数
2. 针对该视图配置访问路由
1. 创建视图
打开刚创建的users模块,在 views.py
中编写视图代码。
from django.http import HttpResponse
def index(request):
"""访问首页的视图"""
return HttpResponse("hello django")
关于视图的说明:
-
关于视图【理解】
- 视 图不是由开发者主动调用的,而是由
Django
框架调用 - 当Django接收到请求时,会进行URL正则匹配,调用对应的视图
- 调用视图时,Django会把请求信息封装为一个
HttpRequest
对象,并作为视图的第一个参数传入
- 视 图不是由开发者主动调用的,而是由
-
关于视图的参数
- 视 图的第一个参数必须定义,名字可自定义,但习惯命名为
request
,类型为HttpRequest
- 缺少了该参数,Django在调用视图时,将无法传入
HttpRequest
对象
- 视 图的第一个参数必须定义,名字可自定义,但习惯命名为
-
关于视图的返回值
- 视图必须返回一个
HttpResponse
对象(或其子类对象),不能像Flask一样直接返回字符串 HttpRequest
请求对象由Django创建,HttpResponse
响应对象由开发人员创建
- 视图必须返回一个
2. 配置URL(路由)
-
在项目下的
urls.py
文件中进行url路由配置如下:# 注意:urlpatterns是一个列表
urlpatterns = [ ...
# 配置路由和视图: ht://127.0.0.1:8000/users/index # 参数1: 匹配url的正则表达式 # 参数2: 匹配成功后由Django框架调用的视图函数 url(r'^users/index$', views.index),
]
注意:此处只是为简单作的初步配置,后续会对URL配置进一步讲解
3. 在浏览器中测试
在浏览器中输入网址 ht://127.0.0.1:8000/users/index
,确认是否执行了视图的逻辑,返回 hello django
信息
一、模板初步使用
1. 在项目的 `templates` 目录下创建一个模板文件
-
在视图函数中,使用
render()
方法渲染模板,得到HttpResponse
对象并返回def index(request):
# render返回的是HttpResponse对象 return render(request, 'index.html')
二、额外项目配置
【 注意】 针对命令行创建的项目,需要额外手动创建模板目录,并进行配置;如果Pycharm创建的项目则无需作额外操作
1. 在项目根目录下创建 `templates` 模板目录,后续开发中模板文件会放在此目录下
2. 在 `setting.py` 项目配置文件中,作如下配置:
项目配置文件
学习目标
- 掌握Django配置文件的常用配置
项目常用配置
在项目的 setting.py
配置文件中,进行项目相关配置的修改。
1. BASE_DIR
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(file)))
当 前项目的根目录,Django会依此来定位工程内的相关文件,我们也可以使用该参数来构造文件路径。
2. DEBUG
- 含义:是否为调试模式(开发模式),默认为
True
- 作用:当
DEBUG
为True
时,如果Django程序运行出现异常时,会在浏览器显示详细的出错调试信息(如下图),而非调试模式下,不会显示出错调试信息
【重要】项目运行出错了,需要查看是哪里一行代码造成出错,再进行分析解决
-
**注 意:**项目上线应该设置为
False
关闭调试模式,并且要同时设置ALLOWED_HOSTS
参数# 关闭调试模式
DEBUG = True
设置允许通过哪些主机访问, * 表示匹配所有(ip)
ALLOWED_HOSTS = ['*']
3. 本地语言与时区
项目本地化配置
-
Django支持本地化处理,即显示语言与时区
-
新创建的Django项目,默认使用的语言为
英语
,时区为UTC标准时区
LANGUAGE_CODE = 'en-us' # 语言 TIME_ZONE = 'UTC' # 时区
-
配置修改: 将语言和时区修改为中国大陆信息
LANGUAGE_CODE = 'zh-hans' # 语言设置为 中文 TIME_ZONE = 'Asia/Shanghai' # 时区设置为 亚洲/上海,注意没有北京
测试
1. django自带了管理后台模块,可以通过 `ht://127.0.0.1:8000/admin/login` 访问,默认显示为英文
2. 修改上述参数后,再次访问,确认是否会显示为中文
4. App应用配置
-
在每个应用目录中都包含了
apps.py
文件,用于保存该应用的相关信息 -
在创建应用时,Django会向
apps.py
文件中写入一个该应用的配置类,如下from django.apps import AppConfig
class UsersConfig(AppConfig):
# 表示这个配置类是加载到哪个应用的, # 每个配置类必须包含此属性,默认自动生成 name = 'users'
-
应用配置: 需要在项目配置文件
settings.py
中的INSTALLED_APPS
列表中,注册创建出来的应用,示例:
配 置说明
* **用 pycharm创建的项目,默认已经是注册了应用的,不需要作额外配置**,针对新创建的应用(或命令行创建的应用)需要作此配置
* 作用:注册应用后,后续开发中,针对该应用中定义的模型类,才会生成对应的数据库表;
静态文件及配置
- 项 目中的 CSS、图片、js都是 静态文件
- 静态文件可以放到一个单独的目录中,以方便管理
- 静态文件相关配置
- STATICFILES_DIRS 静态文件保存在哪个目录下(此参数默认django没有配置,需要开发者自己配置)
- STATIC_URL 访问静态文件的URL前缀,通常采用默认值
/static/
配置示例
1. 在项目根目录下创建 `static_files` 目录,并添加子目录和文件 `imgs/avatar01.png`
2. 在 项目 `settings.py` 文件中进行配置
# 访问静态文件用到的url前缀
STATIC_URL = '/static/'
# 告知Django静态文件保存在哪个目录下
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static_files')]
-
在
index.html
模板中应用使用静态文件: <br/> <img src="/static/imgs/avatar01.png" />
注意
- Django 仅在调试模式下(
DEBUG=True
)能对外提供静态文件 - 当
DEBUG=False
工作在生产模式时,Django不再对外提供静态文件
路由配置
学习目标
- 掌握Django中URL配置
- 掌握Django URL的匹配流程
- 掌握URL路径中请求参数的