J'ai recherché SO et le document Django et je n'arrive pas à le trouver. J'étend la fonctionnalité de base de l'application django.contrib.comments pour utiliser le système d'autorisation personnalisé qui est dans ma webapp. Pour les actions de modération, j'essaie d'utiliser une vue basée sur les classes pour gérer l'interrogation de base du commentaire et la vérification des autorisations. (« EComment » dans ce contexte est mon « commentaire amélioré », héritée de la base django modèle Commentaire.)Kwargs et les vues basées sur les classes dans Django
Le problème que je vais avoir est comment_id
est un kwarg étant passé depuis l'adresse URL dans la. py. Comment puis-je récupérer cela correctement à partir d'une vue basée sur les classes?
À l'heure actuelle, Django lance l'erreur TypeError: ModRestore() takes exactly 1 argument (0 given)
. Code inclus ci-dessous.
urls.py
url(r'restore/(?P<comment_id>.+)/$', ModRestore(), name='ecomments_restore'),
views.py
def ECommentModerationApiView(object):
def comment_action(self, request, comment):
"""
Called when the comment is present and the user is allowed to moderate.
"""
raise NotImplementedError
def __call__(self, request, comment_id):
c = get_object_or_404(EComment, id=comment_id)
if c.can_moderate(request.user):
comment_action(request, c)
return HttpResponse()
else:
raise PermissionDenied
def ModRestore(ECommentModerationApiView):
def comment_action(self, request, comment):
comment.is_removed = False
comment.save()
homme Oh .... Je pense il est temps de rentrer à la maison pour la journée. –