Für meine "Tutorial-App" habe ich nach dem Erstellen eines Objekts einige spezifische Berechtigungen erstellt. Nur der Autor des Objekts muss in der Lage sein, es zu aktualisieren oder zu löschen.Django - Wie bestimmte benutzerdefinierte Berechtigungen in Ansichten und Vorlagen verwenden?
Ich bin ein Anfänger und ich bin hier zu lernen, wenn meine Methoden hässlich sind tolerant sein.
Hier mein views.py
class CreateArticle(LoginRequiredMixin, generic.CreateView):
model = Article
context_object_name = 'article'
template_name = "blog/edit_article.html"
form_class = ArticleForm
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.slug = auto_slug(self.object.titre)
user = User.objects.get(id=self.request.user.id)
self.object.auteur = user
self.object.save()
"""On génère les 2 permissions suivantes :
Modifier l'article dont on est l'auteur
Supprimer l'article dont on est l'auteur"""
content_type = ContentType.objects.get(app_label='blog', model='article')
permission = Permission.objects.create(
codename='edit_article_{0}'.format(self.object.id),
name='Modifier l\'article {0}'.format(self.object.titre),
content_type=content_type
)
user.user_permissions.add(permission)
permission = Permission.objects.create(
codename='delete_article_{0}'.format(self.object.id),
name='Supprimer l\'article {0}'.format(self.object.titre),
content_type=content_type
)
user.user_permissions.add(permission)
messages.success(self.request, "L'article a été crée")
return HttpResponseRedirect(self.get_success_url())
Also wollte ich diese Berechtigungen in meinem UpdateArticle und DeleteArticle allgemeine Ansichten verwenden. Das Problem ist, dass sie spezifisch sind und ich nicht weiß, wie man es benutzt.
Danke, aber in welcher Datei sollte ich die Erlaubnis Mixin schreiben? –
@ LéoMouyna Sie können es an der Spitze Ihrer Sichten-Datei setzen, wenn Sie möchten, oder erstellen Sie eine neue Datei namens permissions.py und legen Sie sie dort. Es liegt an dir. – denvaar
Vielen Dank für Ihre Hilfe! Im nächsten Schritt, wie kann ich wissen, ob diese Berechtigung in einer Vorlage wahr ist? Ist Dauerwelle es erhalten? –