2017-11-12 2 views
0

と呼ばれていない私はDjango at a glance | Django documentation | Djangoコールバック関数オブジェクトは、

にDjangoにlearing午前のURLconfを導入する場合それは読む:

のアプリのURLを設計するには、URLconfのと呼ばれるPythonモジュールを作成します。あなたのアプリケーションの目次で、URLパターンとPythonコールバック関数の間の単純なマッピングが含まれています。

ただし、コールバック関数は呼び出されません。

mysite/news/urls.py 
from django.conf.urls import url 
from . import views 
urlpatterns = [ 
    url(r'^articles/([0-9]{4})/$', views.year_archive), 
] 
print('callback funtion:',views.year_archive) 

出力:

callback function: <function views.year_archive at 0x1039611e0> 

だからと呼ばれていない目的球オブジェクト。

私は、電話を有効にするにはviews.year_archive()とする必要があります。

呼び出されない場合、どのように動作しますか?親クラスでそれを処理するデコレータがあると仮定します。

私はurldjango.conf.urls | Django documentation | Django

のソースコードを確認する重要なステートメントは次のとおりです。

elif callable(view): 
     return RegexURLPattern(regex, view, kwargs, name) 

私はLocaleRegexProviderRegexURLPatterndjango.urls.resolvers | Django documentation | Djangoを探索する上で掘ります。 コールバック関数を呼び出すコードが見つかりませんviews.year_archive

どのような仕組みですか?

+0

エラーが発生しますか? Coz 'DEBUG = True' Djangoは、要求されたURLがどんなパターンとも一致しなかったと言わなければならないので、分析を開始する場所を最初から定義することができます。そして、関数はオブジェクト 'views.year_archive'として渡されなければなりません。そして、結果コールバックを渡します。 –

答えて

2

Djangoは、指定されたURLパターンにリクエストがあるたびに自動的にコールバックビュー関数を呼び出します。

は、この例を見て、それがどのように機能するかを理解するために:

>>> def a(): 
     print("Called function a") 

>>> def b(): 
     print("Called function b") 

>>> def c(callback): 
     # call the callback function like this 
     callback() 

>>> c(a) 
Called function a 
>>> c(b) 
Called function b 

を基本的に、これはDjangoのurl機能がどのように動作するかです。

+0

あなたのブログは質の高いものです。 –

関連する問題