0

私はいくつかの古い Django コードを使用しており、Django 1.4 ドキュメントurlの例と同様に、関数はどこにも使用されていません。

from django.conf.urls import patterns, url, include

urlpatterns = patterns('',
    (r'^articles/2003/$', 'news.views.special_case_2003'),
    (r'^articles/(\d{4})/$', 'news.views.year_archive'),
    (r'^articles/(\d{4})/(\d{2})/$', 'news.views.month_archive'),
    (r'^articles/(\d{4})/(\d{2})/(\d+)/$', 'news.views.article_detail'),
)

しかし、Django 1.5 のドキュメントで、url関数が頻繁に使用されていることに気付きました。

from django.conf.urls import patterns, url

urlpatterns = patterns('',
    url(r'^articles/2003/$', 'news.views.special_case_2003'),
    url(r'^articles/(\d{4})/$', 'news.views.year_archive'),
    url(r'^articles/(\d{4})/(\d{2})/$', 'news.views.month_archive'),
    url(r'^articles/(\d{4})/(\d{2})/(\d+)/$', 'news.views.article_detail'),
)

どうしてこれなの?urlそれは慣例の問題ですか、それとも関数を使用する技術的な理由はありますか? 今後はどのプラクティスに従う必要がありますか? また、url呼び出しなしでレガシー コードを維持するにはどうすればよいですか?

4

1 に答える 1

2

ドキュメントから

url(regex, view, kwargs=None, name=None, prefix='')

pattern() の引数として、タプルの代わりに url() 関数を使用できます。これは、オプションの追加引数辞書なしで名前を指定する場合に便利です。例えば:

urlpatterns = patterns('',
    url(r'^index/$', index_view, name="main-view"),
    ...
)

そして、それらを逆引き URL マッチングに使用します (これもdocs ) 。

最初の例を次のように変換できます。

url(r'^articles/2003/$', special_case_2003, name="special_case_2003"),

テンプレートでそれを呼び出します

{% url special_case_2003 %}

ええ、あなたが投稿した2つの例は、これについて少し曖昧すぎるかもしれません

于 2013-04-23T22:05:43.547 に答える