Django Rest-framework快速實現(xiàn)增刪改查及篩選

1. 創(chuàng)建django項目

需要安裝2個依賴包:

pip install django-filter
pip install djangorestframework

創(chuàng)建項目:

django-admin startproject restful

繼續(xù)創(chuàng)建任意app,如main

cd restful

python manage.py startapp main

項目setting.py文件下,加入自己的app

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'django_filters',
    'main',
]

2. 創(chuàng)建models

以product為例,

class Product(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    name = models.CharField(max_length=100, default='')
    describe = models.CharField(max_length=500, default='')
    price = models.FloatField()
    isDelete = models.BooleanField(default=False)
    class Meta:
        ordering = ('created',)

3. 序列化

在app文件夾下新建serializers.py文件

from rest_framework import serializers
from main.models import Product

class ProductSerializer(serializers.ModelSerializer):
    class Meta:
        model = Product
        fields = '__all__'

4. 視圖函數(shù)

在app文件夾下的view.py中:

from rest_framework import viewsets
from main.serializers import ProductSerializer
from main.models import Product
from django_filters import rest_framework as filters


class ProductFilter(filters.FilterSet):
    class Meta:
        model = Product
        fields = ['name', 'price', ]

class ProductViewSet(viewsets.ModelViewSet):
    queryset = Product.objects.all()
    serializer_class = ProductSerializer
    filter_backends = (filters.DjangoFilterBackend,)
    filter_class = ProductFilter
    

這里的ProductFilter類用來進行字段篩選,假設(shè)這里需要根據(jù)name,price來篩選product

ProductViewSet類繼承viewsets.ModelViewSet,這樣可以在模型基礎(chǔ)批量創(chuàng)建模型的增刪改查功能。

5. 路由配置

在main下的url.py文件下

from django.conf.urls import url, include
from rest_framework.routers import DefaultRouter
from main import views

router = DefaultRouter()
router.register(r'product', views.ProductViewSet)
 # api url 配置
urlpatterns = [
    url(r'^', include(router.urls)),
]

這里直接在router里注冊ProductViewSet,這樣可以直接生成增刪改查的url。

6. 測試

終端運行:

python manage.py runserver 0.0.0.0:8001
  • 查看product list

http://127.0.0.1:8001/product/

  • 創(chuàng)建product

postman: http://127.0.0.1:8001/product/
調(diào)用post方法,data={"name":"runrun", "price":12}這樣就創(chuàng)建了一個product

  • 查看product detail

http://127.0.0.1:8001/product/2/

  • 更新product

postman: http://127.0.0.1:8001/product/2/
調(diào)用put方法,data={"name":"put", "price":1223}

  • 刪除product

postman: http://127.0.0.1:8001/product/2/
調(diào)用delete方法,刪除id=2的product

  • 查詢product

http://127.0.0.1:8001/product/?name=test

http://127.0.0.1:8001/product/?price=12

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容