Gegeben ein uri wie /home/
Ich möchte die Ansicht Funktion finden, der das entspricht, vorzugsweise in einer Form wie app.views.home
oder nur <app_label>.<view_func>
. Gibt es eine Funktion, die mir das gibt?Ansicht Funktion von Anfrage Uri?
Antwort
Sie können die von django zur Verfügung gestellte Methode resolve verwenden, um die Funktion zu erhalten. Sie können das Attribut __module__
der zurückgegebenen Funktion verwenden, um die App-Bezeichnung abzurufen. Dies wird eine Zeichenfolge wie project.app.views
zurückgeben. So etwas wie folgt aus:
from django.core.urlresolvers import resolve
myfunc, myargs, mykwargs = resolve("/hello_world/")
mymodule = myfunc.__module__
Basierend auf KillianDS's answer, hier ist meine Lösung:
from django.core.urlresolvers import resolve
def response(request, template=None, vars={}):
if template is None:
view_func = resolve(request.META['REQUEST_URI'])[0]
app_label = view_func.__module__.rsplit('.', 1)[1]
view_name = view_func.__name__
template = '%s.html' % os.path.join(app_label, view_name)
return render_to_response(template, vars, context_instance=RequestContext(request))
Jetzt können Sie nur return response(request)
rufen am Ende Ihrer Ansicht funcs und es wird automatisch app/view.html
als Vorlage laden und den Anforderungskontext übergeben.
Seit Django 1.3 (März 2011) die resolve
Funktion in der urlresolvers
Modul ein ResolverMatch
Objekt zurückgibt. Dies bietet Zugriff auf alle Attribute der aufgelösten URL-Übereinstimmung, einschließlich des aufrufbaren Pfads der Ansicht.
>>> from django.core.urlresolvers import resolve
>>> match = resolve('/')
>>> match.func
<function apps.core.views.HomeView>
>>> match._func_path
'apps.core.views.HomeView'
- 1. Node.JS Anfrage - Ungültige URI "/"
- 2. NGINX Log-Anfrage auf spezifischen URI
- 3. Anker-Tags aus Anfrage extrahieren URI
- 4. C# - Anfrage an Daten URI-Schema
- 5. Jquery bekommen Anfrage Uri zu lang
- 6. Wie bekomme ich Anfrage-URI ohne Kontextpfad?
- 7. font face Datei-URL in Anfrage uri
- 8. Wie überprüfen http-redirect samlresponse uri Anfrage
- 9. Relative uri für node.js Anfrage Bibliothek
- 10. Abrufen der Anfrage Daten von URI in Webview Windows 8.1
- 11. Erhalten Anker von URI
- 12. Google OAUTH: Der URI in der Anfrage umleiten nicht ein URI umleiten registriert Übereinstimmen
- 13. Node.js Anfrage in Funktion
- 14. Wie mache ich eine POST-Anfrage mit open-URI?
- 15. Aufruf Ansicht Funktion von Subview mit BackboneJS
- 16. Json.Net Serialize String von URI
- 17. Schienen Datatables Ajax JSON 414 Anfrage URI zu groß
- 18. Funktion zum Umformen Ansicht?
- 19. DRY eine Ansicht Funktion
- 20. Ansicht als HTML-Funktion
- 21. Ansicht als HTML-Funktion
- 22. Kein Mapping für HTTP-Anfrage mit URI mit Federsicherheit
- 23. org.springframework.web.servlet.PageNotFound noHandlerFound Keine Zuordnung für HTTP-Anfrage mit URI
- 24. Open Stream von uri
- 25. Hilfe Erstellen von URI
- 26. Erhalte Dateipfad von URI
- 27. Erhalte URI von ContentResolver.query()
- 28. Spring MVC - Keine Zuordnung für Anfrage URI gefunden
- 29. Keine Zuordnung für HTTP-Anfrage mit URI im Frühjahr gefunden?
- 30. Keine Zuordnung für HTTP-Anfrage mit URI gefunden [/vjb.de/j_spring_security_check
vorausgesetzt, dass Sie bereits die Anfrage haben, können Sie einfach "request.resolver_match" statt aufrufen lösen zu tun –