Ich studiere die Django-Dokumentation, aber ich habe einen Teil, den ich nicht verstehen kann, welche Art von Problem es löst und die Dokumentation ist mir nicht klar. Jeder der es weiß, könntest du mir bitte ein echtes Beispiel dafür geben, wie Namespace in einem echten Problem benutzt wird. Ich kenne die Syntax, aber ich weiß nicht den Zweck dieser .. Ich konnte es nicht verstehen. DankeEin echtes Beispiel für URL-Namespace
Antwort
In der Regel werden sie verwendet, um die URLs jeder Anwendung in ihren eigenen Namespace zu stellen. Dies verhindert, dass die reverse()
Django-Funktion und die {% url %}
Vorlagenfunktion die falsche URL zurückgibt, da der URL-Mustername in einer anderen App übereinstimmte.
Was ich in meinem Projekt-Ebene urls.py
Datei die folgende ist:
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)),
)
Hinweis der letzte Abschnitt: diese Anwendungen durchläuft ich installiert haben (settings.LOCAL_APPS
ist eine Einstellung, die ich fügte hinzu, dass enthält nur meine apps (es wird zu INSTALLED_APPS
hinzugefügt, das andere Dinge wie South hat), sucht nach einem urls.py
in jedem von ihnen und importiert diese URLs in einen Namespace, der nach der App benannt wird, und legt diese URLs auch in einem URL-Unterverzeichnis ab, das nach der App benannt wird.
So zum Beispiel, wenn ich eine App hosts
genannt haben, und hosts/urls.py
wie folgt aussieht:
from django.conf.urls.defaults import *
urlpatterns = patterns('hosts.views',
url(r'^$', 'show_hosts', name='list'),
)
mein Jetzt views.py
kann reverse("hosts:list")
rufen Sie die URL der Seite zu erhalten, die hosts.views.show_hosts
nennt, und es wird aussehen etwas wie "/hosts/"
. Gleiches gilt für {% url "hosts:list" %}
in einer Vorlage. Auf diese Weise muss ich nicht befürchten, mit einer URL namens "list" in einer anderen App zu kollidieren, und ich muss nicht jeden Namen mit hosts_
voranstellen.
Beachten Sie, dass sich die Anmeldeseite unter {% url "login" %}
befindet, da ihr kein Namespace zugewiesen wurde.
Betrachten Sie eine URL-Muster verwenden, wie unten
url(r'^login/',include('app_name', name='login'))
Auch Sie Betrachten Sie eine Drittanbieter-App wie Django-RestFramework verwenden. Wenn Sie die App verwenden, müssen Sie die folgende Zeile in URLs Conf-Datei des Projekts deklarieren.
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
Nun, wenn Sie den Code der Ruhe-Rahmen überprüfen, werden Sie den Code unten in urls.py Datei finden
urlpatterns = [
url(r'^login/$', login, login_kwargs, name='login'),
url(r'^logout/$', logout, name='logout'),
]
wir verwendet haben, login 'Name für ein URL-Muster in unserem Projekt und derselbe Name wird von Django-rest-framework für eines ihrer URL-Muster verwendet. Wenn Sie rückwärts ("Login") verwenden, wird Django verwirrt werden.
Um diese Art von Problemen zu beheben, verwenden wir Namespace.
@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-Namen eines Namespace werden niemals mit anderen Namespaces kollidieren.
A kann Namespace URL-Muster reverse('namespace:url_name')
- 1. Was ist ein echtes Beispiel für CORBA?
- 2. Wo finden Sie ein echtes Beispiel für Flex und Bison?
- 3. Was ist ein echtes Beispiel für eine prototypische Vererbung?
- 4. Was ist ein echtes Beispiel für etwas, das du mit einem Hash darstellen würdest?
- 5. simulieren ein echtes Auto auf SUMO
- 6. Beispiel für ein Dateideskriptor-Leck?
- 7. Ist ein DBMS ein Beispiel für Middleware?
- 8. Wie bekomme ich ein echtes Objekt von Jquery?
- 9. Selbstsigniertes vs. echtes SSL-Zertifikat für DEVELOPMENT-Umgebung
- 10. Bietet der BackgroundWorker echtes Multithreading?
- 11. Ein gutes Beispiel für boost :: algorithm :: join
- 12. Ein Beispiel für den LZW-Dekomprimierungsalgorithmus verstehen
- 13. Ein Blog-Beispiel für asp.net mvc 4
- 14. Ist ein Beispiel für eine gute Praxis?
- 15. Ein Beispiel für xVal mit ASP.NET WebForms?
- 16. ein gutes Beispiel für Ameise Best Practices
- 17. Ein Beispiel für die Funktionsweise von UIViewAnimationOptionLayoutSubviews?
- 18. Was ist ein praktisches Beispiel für Pooling?
- 19. Ein Beispiel für MemberTypes.Custom und MemberTypes.TypeInfo member
- 20. Ein einfaches Beispiel für Messaging mit RabbitMQ
- 21. Warum wird ein ungültiges Datum erfolgreich als echtes Datum analysiert?
- 22. Wie man ein 'echtes' JavaScript-Array in Rhino erstellt
- 23. Solr 4 ist es ein echtes Bedürfnis zu erhöhen MaxPermSize
- 24. Ein gutes Beispiel für ein Client-Server-Setup in vb.net?
- 25. Gibt es ein gutes Beispiel für ein gut benutzbares Benutzerhandbuch?
- 26. Ist der BaseAdapter von Android ein Beispiel für ein Adaptermuster?
- 27. Ist ein Python-Wörterbuch ein Beispiel für eine Hash-Tabelle?
- 28. Beispiel für ein Ansichtsmodell für die Razor _Layout.cshtml
- 29. Ein kniffliges Deadlock-Beispiel
- 30. DLL Mutex - ein Beispiel
Ich sehe mit rückgängig gemacht werden .. aber dies ist das gleiche wie ein Namen in eine URL setzen, nicht wahr? Machen Sie den gleichen Job .. –
Jetzt sah ich die vollständige Antwort ... und es ist fantastisch ...Wenn ich es richtig verstanden habe, benutzt du den Namensraum zusammen mit der benannten URL .. damit du dir keine Sorgen machen musst, wenn du zwei Ansichten von verschiedenen Apps mit dem gleichen Namen benannt hast ... ist das richtig? –
Ziemlich viel. Ich bin sicher, dass es andere und bessere Nutzungen gibt, aber das war ein schnelles Beispiel. –