2017-05-25 2 views
0

J'utilise un Générique CreateAPIView pour enregistrer un modèle dans la base de données. Voici mon code:Cadre Djangorest même Générique Créer une vue avec GET et POST

class AppointmentCreateAPIView(generics.CreateAPIView): 
    permission_classes = (AppointmentCreatePermission,) 
    queryset = Appointment.objects.all() 
    serializer_class = AppointmentSerializer 

Et dans mon dossier urls.py, j'ai ceci:

urlpatterns[ 
    url(r'^appointments/create', AppointmentCreateAPIView.as_view()), 
] 

Cette URL soutient évidemment l'opération POST. Cependant, je veux utiliser cette même URL pour gérer une requête GET, qui irait chercher les données nécessaires pour remplir le formulaire de création de rendez-vous. Je comprends que je peux utiliser des URL distinctes pour obtenir et poster, mais ce n'est pas ce que je cherche. Est-il possible que je garde la même URL, mais avec un verbe HTTP différent, la vue serait capable de gérer les requêtes GET et POST?

+0

Est-ce que vous obtenez une erreur lors de l'utilisation de la méthode 'GET' –

+0

Je suis prêt à changer ma logique, mais je veux garder l'URL même. Est-il possible d'appeler deux vues différentes avec le même URL, mais avec un verbe http différent? –

+0

Je pense que ce n'est pas possible. URL différente, mais la même fonction est possible mais dans votre cas, la méthode GET est complètement désactivée. –

Répondre

1

Vous pouvez le faire en ajoutant manuellement la méthode get à votre vue, cela ressemblerait à ceci. Le code ci-dessous ne fonctionnera probablement pas, mais vous donnera une idée générale.

from rest_framework.response import Response 

class AppointmentCreateAPIView(generics.CreateAPIView): 
    permission_classes = (AppointmentCreatePermission,) 
    queryset = Appointment.objects.all() 
    serializer_class = AppointmentSerializer 

    def get(self, request, *args, **kwargs): 
     serializer = AppointmentSerializer({your_data}) 
     return Response(serializer.data)