2016-06-05 13 views
0

Ich habe nach einem Ansatz zum Hinzufügen bestimmter URLs zu einer bestimmten App gesucht. Und schränken Sie die URLs für die Verwendung in anderen Apps in Django ein.Beschränken URLs auf bestimmte Anwendungen in Django

Ich benutze Mezzanine und wenn ein Benutzer zu sub.domain.com geht, sieht er Vorlagen, die spezifisch für diese Website sind. Wenn der Benutzer jedoch versucht, zur URL auf sub.domain.com/example zu wechseln, wird die URL angezeigt, die sich auf domain.com/example befinden soll. Ich möchte, dass das ein 404 für den Benutzer statt in der App ist.

Entschuldigung für mein schlechtes Englisch, ich hoffe, Sie verstehen, wovon ich spreche.

Antwort

1

Sie können den aktuellen Domänennamen (auf den der Benutzer zugreift) von request.META['HTTP_HOST'] abrufen. Richten Sie dann basierend darauf 404 ein, wenn die URL in bestimmten Domänen besucht wird.

from django.http import Http404 
def my_restricted_view(request): 
    domain = request.META['HTTP_HOST'] 
    if domain == 'sub.domain.com': 
     return render(request, "template_name", {}) 
    else: 
     raise Http404 
+0

Sie könnten ein bisschen mehr Arbeit tun und dies zu einem Dekorateur, z. '@restricted_view (optional_domain_list)', und das verschiebt die gesamte Fiddly-Logik aus Ihren Ansichten. –

+0

Guter Punkt, danke! Ja, in Wirklichkeit würde ich das tun. Ich würde wahrscheinlich auch die Subdomains und Domains in der Datenbank speichern. – masnun

Verwandte Themen