Routage reste-cadre

routage

1, un premier routage écrites - de manière originale

De cette façon, est en face a été écrit;


urls.py

à partir django.conf.urls importation url
 de App01 importation vues 

urlpatterns = [ 
    url (r ' ^ livres / $ ' , views.BookView.as_view ()), 
    url (r ' ^ livres / (? P <pk> \ d +) $ ' , views.BookDetailView.as_view ()), 
]


views.py

classe LivreVoir (APIView): 

    def get (auto, demande): 
        book_list = models.Book.objects.all () 
        bs = BookSerializers (book_list, beaucoup = True)
         retour réponse (bs.data) 

    def poster (auto, demande):
         # 添加一条数据
        impression (request.data) 

        bs = BookSerializers (data = request.data)
         si bs.is_valid (): 
            bs.save ()   # 生成记录
            retour Réponse (bs.data)
         autre : 

            retour Réponse (bs.errors ) 

classeBookDetailView (APIView):
     def get (auto, demande, pk): 
        book_obj = models.Book.objects.filter (pk = pk) .first () 
        bs = BookSerializers (book_obj, beaucoup = False)
         retour Réponse (bs.data)
     def mettre (self, demande, pk): 
        book_obj = models.Book.objects.filter (pk = pk) .first () 

        bs = BookSerializers (données = request.data, instance = book_obj)
         si bs.is_valid): ( 
            bs .save () # mise à jour le 
            retour de réponse (bs.data)
         autre :
             le retourRéponse (bs.errors)
     def supprimer (auto, demande, pk): 
        models.Book.objects.filter (pk = pk) .delete () 

        retour réponse ( "" )


2, le libellé de la deuxième voie - un mode semi-automatique ( vue héritage de classe ModelViewSet )

settings.py enregistré 'rest_framework'


serializer.py

de rest_framework.serializers importer ModelSerializer
 de App01 importation des modèles de 

classe PublishSerializers (ModelSerializer):
     classe Meta: 
        modèle = models.Publish 
        champs = " __all__ "


models.py

à partir django.db importation modèles 

# Créer vos modèles ici. 
classe de publication (models.Model): 
    nom = models.CharField (longueur_max = 32 ) 
    city = models.CharField (longueur_max = 64)


makemigrations
émigrer
image


views.py

de django.shortcuts importer render
 de App01 importation des modèles
 de app01 importation sérialiseur
 de rest_framework.views importer   APIView
 de rest_framework.response importation   Réponse
 de rest_framework.viewsets importer ModelViewSet 


# 路由的第二种写法: 
classe PublishView (ModelViewSet): 
    queryset = modèles. Publish.objects.all () 
    serializer_class = serializer.PublishSerializers


urls.py

de django.conf.urls importer url
 de django.contrib import administration
 de app01 importation vues 

urlpatterns = [ 
    url (r ' ^ admin / ' , admin.site.urls), 
    url (r ' ^ publier / $ ' , views.PublishView .as_view ({ ' obtenir ' : ' liste ' , ' après ' : ' créer ' })), 
    url (r ' ^ publier / (P <pk> \ d +?) de $ ', Views.PublishView.as_view ({ ' obtenir ' : ' récupérer ' , ' supprimer ' : ' détruire ' , ' put ' : ' mise à jour ' })), 
]


test:

image


3, une troisième voie écrite - génération automatique

views.py

de django.shortcuts importer rendent
 de App01 importation des modèles
 de app01 importation sérialiseur
 de rest_framework.views importer   APIView
 de rest_framework.response importation   Réponse
 de rest_framework.viewsets importer ModelViewSet 

# 必须继承ModelViewSet才可以用这种方式的路由
classe PublishView (ModelViewSet): 
    queryset = models.Publish.objects.all () 
    serializer_class = serializer.PublishSerializers


urls.py

de django.conf.urls importation URL, le comprennent
 de django.contrib importation ADMIN
 de APP01 importation vues 

de rest_framework.routers importation SimpleRouter, defaultrouter 

# SimpleRouter généré automatiquement deux itinéraires; defaultrouter générant automatiquement quatre routes 
# Router SimpleRouter = () 
Router = defaultrouter () 

# enregistrement; publier chemin est 
router.register ( ' publier ' , views.PublishView) 

les urlpatterns = [ 
    URL (R & lt ' ^ / ADMIN ' , admin.site.urls),
    # Url (r '^ publier / $', views.PublishView.as_view ({ 'get': 'liste', 'post': 'créer'})), 
    # ? URL (r ^ publish / (P <pk > \ d +) $ », views.PublishView.as_view ({ 'get': 'récupérer', 'delete': 'détruire', 'put': 'update'})), 
    url (r '' , include (routeur .urls)) 
]

Je suppose que tu aimes

Origine www.cnblogs.com/weiyiming007/p/12521643.html
conseillé
Classement