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'),