Djangoのクラスビューコメント

ビュータイプが導入された
       ビューは、関数の形で定義されている場合、ビューの関数であり、理解を容易にするビュー機能が、ビューの機能に対応するパスに遭遇した様々な方法のHTTPリクエストのさまざまなサポートを提供します(入れ、削除、ポストを得ます ) 、あなたは私たちが解決するために、クラスビューを導入し、コードの可読性と再利用性は非常に低い終わりで、異なるビジネスロジックに関数を記述する必要があり、そう。
以下では、ビューの関数の一例です

[Pythonの]  プレーンテキストビューは、  コードをコピー
?
01
02
03
04
05
06
07
08
09
10
def register(request):
     """处理注册"""
  
     # 获取请求方法,判断是GET/POST请求
     if request.method = = 'GET' :
         # 处理GET请求,返回注册页面
         return render(request, 'register.html' )
     else :
         # 处理POST请求,实现注册逻辑
         return HttpResponse( '这里实现注册逻辑' )


利点のクラスビューは、
       コードの可読性の良い
       他の場所は、クラスの特定のメソッドを使用する必要がある場合はビュー関数のクラスビューの相対は、高い再利用性を持ち、クラスの直接の後継者が閲覧することができます
クラスビューを定義された
別の要求ハンドラの仕方に応じて異なるビューを定義したクラスで
クラスを定義ジャンゴが提供する親クラスビューから継承する必要があるビュー

[Pythonの]  プレーンテキストビューは、  コードをコピー
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
from django.views.generic import View
 
 
class DefineClassview(View):
     """演示类视图的定义和使用"""
 
     def get( self , request):
         """处理GET请求业务逻辑"""
         return HttpResponse( 'GET请求业务逻辑' )
 
     def post( self , request):
         """处理POST请求业务逻辑"""
         return HttpResponse( 'POST请求业务逻辑' )
 
     def put( self , request):
         """处理PUT请求业务逻辑"""
         return HttpResponse( 'PUT请求业务逻辑' )
 
     def delete( self , request):
         """处理DELETE请求业务逻辑"""
         return HttpResponse( 'DELETE请求业务逻辑' )


URLの設定:as_viewクラスビューを呼び出し()関数
注:as_view()関数は、親クラスビューから継承されました

[Pythonの]  プレーンテキストビューは、  コードをコピー
?
1
2
3
4
5
6
urlpatterns = [
     # 视图函数:注册
     # url(r'^register/$', views.register, name='register'),
     # 类视图:注册  as_view()可以将类视图转换成视图,并决定如何分发请求
     url(r '^register/$' , views.RegisterView.as_view(), name = 'register' ),
]


原則クラスビュー
次のソースコードからは、我々はas_view()関数は、ビュー()関数を返すビュー内で定義されて見ることができます。
私たちは、派遣()関数は、ディスパッチ()関数は、別の要求に応じてコール要求メソッド、さまざまな方法を返す呼び出し、ビュー()関数で、見てください。

[Pythonの]  プレーンテキストビューは、  コードをコピー
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
@classonlymethod
def as_view( cls , * * initkwargs):
     """
     Main entry point for a request-response process.
     """
     ...省略代码...
 
     def view(request, * args, * * kwargs):
         self = cls ( * * initkwargs)
         if hasattr ( self , 'get' ) and not hasattr ( self , 'head' ):
             self .head = self .get
         self .request = request
         self .args = args
         self .kwargs = kwargs
         # 调用dispatch方法,按照不同请求方式调用不同请求方法
         return self .dispatch(request, * args, * * kwargs)
 
     ...省略代码...
 
     # 返回真正的函数视图
     return view
 
def dispatch( self , request, * args, * * kwargs):
     # Try to dispatch to the right method; if a method doesn't exist,
     # defer to the error handler. Also defer to the error handler if the
     # request method isn't on the approved list.
     if request.method.lower() in self .http_method_names:
         handler = getattr ( self , request.method.lower(), self .http_method_not_allowed)
     else :
         handler = self .http_method_not_allowed
     return handler(request, * args, * * kwargs)

 

 

関係するその他の技術情報:gzitcast

おすすめ

転載: www.cnblogs.com/heimaguangzhou/p/11689916.html
おすすめ