参照を構築するためのDjangoプロジェクト:
https://www.cnblogs.com/dongxixi/p/10981577.html
図Djangoのリクエストのライフサイクル:
開始するには、ブラウザの要求によって開始
知識ポイント1:
ブラウザとサーバソフトウェアアーキテクチャ:C / Sアーキテクチャ
HTTPプロトコル:また、ブラウザとサーバデータ伝送のフォーマットを定義するハイパーテキスト転送プロトコルとして知られています
HTTPプロトコルの4つの特性:
TCP / IPベースのアプリケーション層プロトコルの演技
要求応答に基づいて、
ステートレス
接続なし
知識ポイント2:
要求の形式と応答形式:
リクエストフォーマット:
最初の行要求
リクエストヘッダ
空行(\ Rは\ N)
リクエストボディ
応答形式:
応答の最初の行
レスポンスヘッダ
空行
レスポンスボディ
要求応答処理wsgiref
知識ポイント3:ウェブサービスゲートウェイプロトコル
CGI:コモン・ゲートウェイ・プロトコル
WSGI契約:
WSGIプロトコル(Webサーバーゲートウェイインターフェイス)とアプリケーションサーバは、主に2つの部分で構成さ:
WSGI server
クライアントからの要求を受信するための責任がある、されrequest
に転送リターンクライアントに戻します。application
application
response
-
サーバによって受信されるWSGIアプリケーションは、要求を転送する要求を処理し、サーバに処理結果を返します。アプリケーションは、ミドルウェアおよびアプリケーションサーバーが実装する必要がある式の中間体(ミドルウェア)の複数のスタックを含むことができ、したがってWSGI WSGIアプリケーションとサーバとの間で調節的な役割を果たし得る:サーバ、アプリケーション・ミドルウェア・プレイ(プログラムの実行は)、アプリケーションのために、ミドルウェアは、サーバ(WSGIサーバ)を果たしています。
WSGI
実際には、プロトコルを定義server
およびapplication解耦
仕様を、私たちは、Djangoの合意の実現であるwsgirefています
また、他の多くのサーバーがある契約を実装します。
uwsgi:支持较高并发,django项目上线一般会选择用它替换django自带的wsgiref == JAVA中的tomcat
wsgiref:支持并发不高,django自带
请求解析完成后依次通过Django中间件
知识点4:django中间件
django自带七大中间件:可以简单理解为django的门户,安全认证及全局处理都在这里面
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
除了django自带的中间件以外我们还可以自定义中间件实现一些全局的校验和配置
方法:在应用下新建文件夹,名字自取,文件夹下新建任意py文件,名字自取,接下来就可以在py中定义自己的中间件l
# 导入MiddlewareMixin模块 from django.utils.deprecation import MiddlewareMixin #定义中间件的类,它继承MiddlewareMixin class Md1(MiddlewareMixin): def process_request(self, request): print('Md1里面的process_request') class Md2(MiddlewareMixin): def process_request(self, request): print('Md2里面的process_request')
django暴露给开发者5种方法分别是:
process_request(self, request): #请求来的时候执行 process_response(self, request, response): #响应返回时执行 process_template_response(self, request, response): #视图函数执行完了执行 process_view(self, request, view_func, view_args, view_kwargs): #路由匹配成功后视图函数执行前执行 process_exception(self, request, exception): #视图函数出错时执行
中间件具体作用及执行流程详见:https://www.cnblogs.com/dongxixi/p/11048901.html
接下来进入urls.py,路由匹配
知识点5:路由系统
urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^$',views.home), url(r'^test/$',views.test), url(r'^testadd/$',views.testadd), url(r'',views.error) ]
①路由正则匹配
②无名分组
③有名分组
④反向解析
⑤路由分发
路由系统详见:https://www.cnblogs.com/dongxixi/p/11001722.html
路由匹配成功,进入视图函数
知识点6:CBV/FBV
FBV:
路由层写法:
url(r'^test/$',views.test),
视图层写法:
def text(request): if request.method == "POST": return HttpResponse("ok") elif request.method == "GET": return HttpResponse("ok")
CBV:
路由层写法:
url(r'^test/$',views.Text.as_view()),
视图层写法:
from django.views import View class Text(View): def get(self,request): return HttpResponse("ok") def post(self,request): return HttpResponse("ok")
三板斧及jsonresponse
from django.shortcuts import render,redirect,HttpResponse from django.http import JsonResponse
CBV源码剖析见:
视图函数处理数据,进行django模板渲染
知识点7:django模板层
①过滤器
②标签
③自定义过滤器、标签、inclusion_tag
④模板继承与导入
⑤静态文件配置
详见:
模板层:https://www.cnblogs.com/dongxixi/p/11013803.html
补充:https://www.cnblogs.com/dongxixi/p/11007339.html
知识点8:cookie与session
①cookie基本使用
②session原理及使用
③auth模块
④自定义User表
cookie与session使用见:https://www.cnblogs.com/dongxixi/p/11048974.html
auth模块及自定义User表使用见:https://www.cnblogs.com/dongxixi/p/11055516.html
知识点9:form认证组件
①form组件使用
②form组件进阶
③分页器
form组件:https://www.cnblogs.com/dongxixi/p/11042917.html
form组件进阶:https://www.cnblogs.com/dongxixi/p/11043435.html
分页器:https://www.cnblogs.com/dongxixi/p/11042854.html
知识点10:django数据库操作:
①一对一、一对多、多对多表分析及创建
②多对多表三种创建方式
③django ORM增删改查、单表操作、多表操作
④F、Q查询
⑤ORM类、字段基础
⑥事务、批量插入、查询优化
表关系:https://www.cnblogs.com/dongxixi/p/10862974.html
多对多表三种创建方式:https://www.cnblogs.com/dongxixi/p/11042883.html
ORM增删改查:https://www.cnblogs.com/dongxixi/p/11013783.html
F、Q查询:https://www.cnblogs.com/dongxixi/p/11042869.html
ORM基础:https://www.cnblogs.com/dongxixi/p/11050753.html
django-model进阶:https://www.cnblogs.com/liuqingzheng/articles/9805991.html
知识点11:
未完待续...