私はDjangoのドキュメントを勉強していますが、私はどのような問題が解決しているのか分かりませんし、ドキュメントが私には分かりません。あなたが知っている人なら誰でも、本当の問題でネームスペースを使う方法の本当の例を教えてください。私は構文を知っているが、私はこれの目的を知らない。私は理解できなかった。ありがとうURLネームスペースの実際の例
答えて
通常、各アプリケーションのURLを独自の名前空間に入れるために使用されます。これにより、別のアプリでURLパターン名が一致したため、reverse()
Django関数と{% url %}
テンプレート関数が間違ったURLを返すのを防ぐことができます。
私は私のプロジェクトレベルurls.py
ファイルを持っていることは以下の通りです:
from django.conf.urls.defaults import *
from django.conf import settings
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^$', 'main.views.main', name='main'),
url(r'^login$', 'django.contrib.auth.views.login', name="login"),
url(r'^logout$', 'django.contrib.auth.views.logout',
{"next_page": "/"}, name="logout"),
# Admin
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),
)
# Auto-add the applications.
for app in settings.LOCAL_APPS:
urlpatterns += patterns('',
url(r'^{0}/'.format(app), include(app + '.urls', namespace=app)),
)
注最後のセクション:これは私がインストールされているアプリケーションを通過(settings.LOCAL_APPS
は、私はそれが唯一の私のアプリケーションが含まれている追加の設定ですそれはINSTALLED_APPS
に追加され、南のようなものがあります)、それぞれの中でurls.py
を探して、それらのURLをアプリの後に名前をつけた名前空間にインポートし、それらのURLをアプリの名前を付けたURLサブディレクトリに入れます。
私はhosts
という名前のアプリを持っている、とhosts/urls.py
がどのように見えるのであれば、例えば、:
from django.conf.urls.defaults import *
urlpatterns = patterns('hosts.views',
url(r'^$', 'show_hosts', name='list'),
)
今私のviews.py
がhosts.views.show_hosts
を呼び出すページへのURLを取得するためにreverse("hosts:list")
を呼び出すことができ、それが見えます"/hosts/"
のようなものです。同じテンプレート内の{% url "hosts:list" %}
になります。こうすることで、別のアプリで「リスト」というURLとの衝突を心配する必要がなくなり、すべての名前にhosts_
の接頭辞を付ける必要はありません。
ログインページは、名前空間が指定されていないため、{% url "login" %}
にあることに注意してください。また、あなたはジャンゴ・RestFrameworkのようなサードパーティのアプリを使用している考えてみましょう
url(r'^login/',include('app_name', name='login'))
以下のよう
を使用すると、URLパターンを使用しています考えてみましょう。 アプリケーションを使用するときは、プロジェクトのURL confファイルに次の行を宣言する必要があります。あなたは残りのフレームワークのコードをチェックすると
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
さて、あなたは私たちが私たちの中にURLパターンの名前のログイン 'を使用している
urlpatterns = [
url(r'^login/$', login, login_kwargs, name='login'),
url(r'^logout/$', logout, name='logout'),
]
urls.pyファイルに以下のコードを見つけますそのURLパターンの1つとしてDjango-rest-frameworkが同じ名前を使用しています。 reverse( 'login')を使うと、Djangoは混乱します。
これらの問題を解決するために、私たちは名前空間を使用します。
@register.simple_tag
def optional_docs_login(request):
"""
Include a login snippet if REST framework's login view is in the URLconf.
"""
try:
login_url = reverse('rest_framework:login')
except NoReverseMatch:
return 'log in'
名前空間のURL名は、他の名前空間と決して衝突しません。
名前空間URLパターンは、私が見reverse('namespace:url_name')
- 1. 実際の例のメモリリーク
- 2. Idrisの実際の例
- 3. .NETルーティング実際のURL
- 4. Yii2でのイベントの実際の例
- 5. ASP.Net MVCの実際の1ページの例
- 6. ReRegisterForFinalize SuppressFinalize実際の生活の例
- 7. キャスティングオペレータの実際の使用例
- 8. Cコーディングトレーニングの実際の使用例
- 9. tomcat className = "org.apache.catalina.authenticator.SingleSignOn"実際の例ですか?
- 10. Boost :: MPLの実際的な使用例?
- 11. Senchaフェード効果の実際の実施例
- 12. 実際のサイトURLを使用するかなりのURLを作成する際の問題
- 13. URLのパラメータの実際の値を取得する方法
- 14. ARMのバリア(DSB、DMB、ISB)の実際の使用例
- 15. ASP.NET 4.0のSetSessionStateBehaviorメソッドの実際の例は何ですか?
- 16. underscore.js _.memoize()の実際の動作の例ですか?
- 17. BSPベースのポリゴン三角形分割の実際の例
- 18. Visual Studio 2010アドインでネームスペースにアクセスする際の問題
- 19. Symfony(1.4)アプリケーションへの実際のURLを取得するには?
- 20. は、実際のURLを取得、この場合
- 21. 実際のハードリンクのURLを取得する方法
- 22. jboss7.1 arquillanテストの実際の例を得るには?
- 23. CORBAの実際の例は何ですか?
- 24. は一例に過ぎず、実際のコードの場合
- 25. カレーの実際の使用例は何ですか?
- 26. 参照を返すEcmascript関数の実際の例は?
- 27. 実際のPHP 5の例に関する質問
- 28. 部分的な関数の実際の例
- 29. Android:実際のデバイスでのロギングまたは例外スタックトレース
- 30. 返品の際のURLは
を使用して逆転させることができる..しかし、これは右、URLに名前を入れと同じですか?同じ仕事をしてください.. –
今私は完全な答えを見ました...そしてそれは素晴らしいです...私が正しいと思ったら、名前空間と一緒に名前空間を使用します。同じ名前の異なるアプリケーションから2つのビューに名前を付けた場合、心配することはありません...これは正しいですか? –
かなり。私は他の用途、より良いものがあると確信していますが、これは簡単な例でした。 –