多額の延長知識のライフサイクルによって、Djangoのリクエスト

参照を構築するための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に転送リターンクライアントに戻します。applicationapplicationresponse
  • サーバによって受信される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:

未完待续...

 

おすすめ

転載: www.cnblogs.com/dongxixi/p/11115921.html