ビュータイプが導入された
ビューは、関数の形で定義されている場合、ビューの関数であり、理解を容易にするビュー機能が、ビューの機能に対応するパスに遭遇した様々な方法の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