In meinem Django-Projekt habe ich Products
.Django: Zugriff auf Seite beschränken
Sie können Produkte Zugriff auf diese URL-Muster mit:
example.com/tshirt
oder example.com/jacket
usw.
Darüber hinaus können Sie einige andere Seiten für diese Produkte sehen, das heißt:
example.com/tshirt/details
oder example.com/jacket/buy
Mein Problem: Wenn ich ein neues Produkt in meiner Admin-Oberfläche erstelle, ist das Produkt standardmäßig deaktiviert (ich kann es aktivieren) später). Der Grund ist, dass, wenn ich ein neues Produkt erstelle, ich oft noch nicht alle notwendigen Informationen (d. H. Preis) habe. Solange ein Produkt deaktiviert ist, sollten alle URLs, die mit example.com/this-one-product
beginnen, für den normalen Besucher nicht sichtbar sein (404-Fehler erhalten). Leider weiß ich nicht, wie ich das machen soll.
Mein Ziel ist, dass es für den Superuser oder Benutzer von den Mitarbeitern sichtbar ist. Weil es Sinn macht, dass sie dieses Produkt überprüfen und sehen können, wie es aussieht, wenn es gerendert wird. Aber wie gesagt, sollte es für den normalen Besucher der Webseite nicht sichtbar sein.
Jetzt könnte ich natürlich erstellen, wenn Aussagen in all diesen Ansichten (und überprüfen Sie, ob Superuser oder von Personal), aber das klingt nicht wie eine elegante Lösung. Weil ich diese Aussagen zu vielen verschiedenen Ansichten hinzufügen müsste und das ist gegen DRY und ich mag diese Lösung einfach nicht.
Was wäre perfekt: Eine Einstellung zu 404 Fehler für alle Besucher eines Produkts, das deaktiviert ist, zu liefern. Wie ist das möglich?
Sie müssen überschreiben, Sie erhalten queryset mit Ihren Regeln, für weitere Hilfe benötigen Sie Ihre Details anzuzeigen. –
Dies scheint in den Dokumenten beschrieben [https://docs.djangoproject.com/en/1.11/ref/contrib/admin/actions/](https://docs.djangoproject.com/en/1.11/ref/ contrib/admin/actions /) –
Mögliches Duplikat von [Django is \ _staff Erlaubnis Dekorateur] (https://stackoverflow.com/questions/5833184/django-is-staff-permission-decorator) –