例として:
view.py
def view1( request ):
return HttpResponse( "just a test..." )
urls.py
urlpatterns = patterns('',
url( r'^view1$', 'app1.view.view1'),
)
のURLパスを取得したいview1
。これどうやってするの。「xxx/view1」などの URL パスをハード コーディングすることは避けたいと考えています。
これは、取得するかどうかによって異なります。ビュー (python コード) で URL を取得する場合は、reverse
関数 (ドキュメント)を使用できます。
reverse('admin:app_list', kwargs={'app_label': 'auth'})
テンプレートで使用したい場合は、url
タグ ( documentation )を使用できます。
{% url 'path.to.some_view' v1 v2 %}
view1 の URL を view1 に入れたい場合は、request.get_path() が最適です。
他の人が言ったように、これにはreverse
関数とurl
テンプレートタグを使用できます(使用する必要があります)。
URLパターンに名前を追加することをお勧めします
urlpatterns = patterns('',
url( r'^view1$', 'app1.view.view1', name='view1'),
)
この名前のおかげでそれを逆転させる
reverse('view1')
これにより、コードのリファクタリングが容易になります
はい、もちろん、URL をハードコーディングせずに「view1」という名前のビューの URL パスを取得できます。
Django urlresolvers から 'reverse' 関数をインポートするだけです。
以下のコード例を見てください。
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
def some_redirect_fun(request):
return HttpResponseRedirect(reverse('view-name'))
これにはリバース機能を使用できます。リファクタリングを容易にするために、それぞれ url-includes と url の名前空間と名前を指定できます。
普遍的なアプローチ
Django 拡張機能をインストールし、INSTALLED_APPS に追加します
対応するビュー関数を含むすべての URL を含むテキスト ファイルを生成します
./manage.py show_urls --format pretty-json --settings=<path-to-settings> > urls.txt
お気に入り
./manage.py show_urls --format pretty-json --settings=settings2.testing > urls.txt
urls.txt
{
"url": "/v3/blockdocuments/<pk>/",
"module": "api.views.ganeditor.BlockDocumentViewSet",
"name": "block-documents-detail",
},