一、Django 处理 HTTP 请求
Web 应用的交互过程其实就是 HTTP 请求与响应的过程。
Django 作为一个 Web 框架,也能接收浏览器发来的 HTTP 请求,返回相应的 HTTP 响应。那么:
- Django 如何接收 HTTP 请求?
- Django 如何处理这个 HTTP 请求?
- Django 如何生成 HTTP 响应?
对于如何处理这些问题,Django 有其一套规定的机制。我们按照 Django 的规定,就能开发出所需的功能。
Django 如何接收 HTTP 请求
Django 接收 HTTP 请求,主要通过 urls.py
这个文件将 URL 地址解析到对应的 VIEWS里面
from django.contrib import admin
from django.urls import path
from about import about_views # new
from django.conf.urls import include # new
urlpatterns = [
path('admin/', admin.site.urls),
path('abc/', include('about.urls')), # new
path('xyz/', about_views.index), # new
]
这里使用了两种方式来解析 URL 地址
- 将
abc
路径地址转发到about
应用的urls.py
模块,由about
应用处理,地址将abc/
路径进行拼接
from django.urls import path
from . import views
urlpatterns = [
path('123', views.index),
]
相当于解析了
http://127.0.0.1:8000/abc/123
- 将
xyz
路径地址转发到about
应用的views.py
模块的index
方法,由index
处理改请求
from django.shortcuts import render
# Create your views here.
def index(request):
return render(request,'about_me.html')
相当于解析了
http://127.0.0.1:8000/xyz
Django 如何处理这个 HTTP 请求
Django 处理 HTTP 请求,主要通过 views.py
这个文件,上面我们说过 urls.py
模块将地址转发到对应的 views.py
模块的具体方法中处理,然后方法会返回结果。
Django 如何生成 HTTP 响应
在 views.py
模块的具体方法中处理地址请求时,会返回结果。
二、HTML模版与静态资源
模版与资源- 当我们再
render
里面返回about_me.html
时,页面可能会报TemplateDoesNotExist
错误,这个时候需要在setting中TEMPLATES的DIRS里面加上templates的目录
TEMPLATES = [
{
'DIRS': [os.path.join(BASE_DIR, 'templates')],
},
]
setting中
BASE_DIR
的定义,可以获取项目的绝对路径
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
os.path.abspath(__file__)
可以获得当前文件的绝对路径
- 当html页面正常打开,但是css文件404时,这个时候需要在setting中加上静态文件的地址
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
三、项目配置流程
项目配置流程- 上图展示了一个最简单的项目配置的流程
- 在图中,上面三步是在创建项目的初期完成的,完成后不需要变动
- 中间三步,是后台处理的核心,也是我们需要经常改动的地方
- 最后的Html和css则是前端需要关注和处理的地方
Django的MTV
- Model(模型):数据库相关的操作(ORM)
- Template(模版):模板语法--->将变量(数据库数据)如何巧妙嵌入html页面中
- View(视图):逻辑处理
- 另外,Django还有一个urls分发器:路径与视图函数的映射关系
网友评论