J'ai une URL comme ci-dessous dans mon modèle
class VerifyEmailView(APIView):
permission_classes = (AllowAny,)
allowed_methods = ('POST','GET', 'OPTIONS', 'HEAD')
....
def get(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
'''key is used here'''
self.kwargs['key'] = serializer.validated_data['key']
confirmation = self.get_object()
confirmation.confirm(self.request)
....
3 Réponses :
Vous pouvez utiliser
path = request.path
path_vals = path.split('/')
key = path_vals[-2]
comme vous utilisez des paramètres d'url, vous pouvez l'obtenir directement en tant que paramètre de fonction dans votre get () voir l'exemple ci-dessous:
class VerifyEmailView(APIView):
permission_classes = (AllowAny,)
allowed_methods = ('POST','GET', 'OPTIONS', 'HEAD')
....
def get(self, request, key):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
'''key is used here'''
self.key = key
confirmation = self.get_object()
confirmation.confirm(self.request)
....
Ici, vous obtenez directement "MjU : 1ggiiI: 923vm1cLboPQk9TX1f0aywDWBs8 "dans la variable key .
Pour plus d'informations, consultez cette page
tant que la solution #nishant et #Amit fonctionne, cela devrait également fonctionner
path('rest-auth/registration/account-confirm-email/', VerifyEmailView.as_view(), name='account_confirm_email'),
mais dans ce cas, Allauth se plaint en fait de l'URL du formulaire:
path('rest-auth/registration/account-confirm-email/<str:key>', VerifyEmailView.as_view(), name='account_confirm_email'),