最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django開(kāi)發(fā)RESTful API實(shí)現(xiàn)增刪改查(入門(mén)級(jí))

 更新時(shí)間:2021年05月10日 11:45:46   作者:?jiǎn)搪贩? 
這篇文章主要介紹了Django開(kāi)發(fā)RESTful API實(shí)現(xiàn)增刪改查(入門(mén)級(jí)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

數(shù)據(jù)庫(kù)中有user表如下:

在這里插入圖片描述

新建一個(gè)Django項(xiàng)目:

django-admin.py startproject myDjango<project_name>

目錄介紹

myDjango/
├── manage.py  # 管理文件
└── myDjango # 項(xiàng)目目錄
    ├── __ init __.py
    ├── settings.py  # 配置文件
    ├── urls.py  # 路由 --> URL和函數(shù)的對(duì)應(yīng)關(guān)系
    └── wsgi.py  # runserver命令就使用wsgiref模塊做簡(jiǎn)單的web server

使用rest_framework

在setting.py中添加:

INSTALLED_APPS = [
   ...
   'rest_framework'
]

連接MySQL數(shù)據(jù)庫(kù)

在setting.py中設(shè)置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'bigdatatest',
        'USER': 'root',
        'HOST': '127.0.0.1',
        'PASSWORD': '1009',
        'PORT': 3306,
        'OPTIONS': {'charset': 'utf8mb4'},
    }
}

在__init__.py中添加:

import pymysql
pymysql.version_info = (1, 4, 13, "final", 0)
pymysql.install_as_MySQLdb()

新建app

python manage.py startapp users<app_name>

目錄介紹:

users/
├── migrations  # 用于在之后定義引用遷移功能
   ├── __ init __.py
├── __ init __.py
├── admin.py  # 管理站點(diǎn)模型的聲明文件,默認(rèn)為空
├── apps.py  # 應(yīng)用信息定義文件。在其中生成了類(lèi)Appconfig,類(lèi)用于定義應(yīng)用名等Meta數(shù)據(jù)
├── models.py  # 添加模型層數(shù)據(jù)類(lèi)的文件
├── tests.py  # 測(cè)試代碼文件
└── views.py  # 定義URL響應(yīng)函數(shù)

在setting.py中添加:

INSTALLED_APPS = [
    ...
    'users'
]

把數(shù)據(jù)庫(kù)中的表生成對(duì)應(yīng)的model

python manage.py inspectdb

將我們表的model拷貝到users下的models.py里

from django.db import models

class User(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=255, blank=True, null=True)
    age = models.IntegerField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'user'

創(chuàng)建一個(gè)序列化Serializer類(lèi),使之可以轉(zhuǎn)化為,某種表現(xiàn)形式如json

在users目錄下,創(chuàng)建文件serializers.py

from rest_framework import serializers
from users.models import User

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = "__all__"

數(shù)據(jù)輸出

編寫(xiě)users下的views.py

from __future__ import unicode_literals

from rest_framework.decorators import api_view
from rest_framework.response import Response

from user.models import User
from user.serializers import UserSerializer

@api_view(['GET'])
def getlist(request):  # 獲取全部數(shù)據(jù)
    if request.method == 'GET':
        users = User.objects.values('id', 'name', 'age').distinct()
        serializer = UserSerializer(users, many=True)
        return Response(serializer.data)

@api_view(['GET'])
def getlistpic(request):  # 根據(jù)id查找單條數(shù)據(jù)
    id = request.GET['id']
    if id is not None:
        users = User.objects.filter(id=id)
        serializer = UserSerializer(users, many=True)
        return Response(serializer.data)
    else:
        return Response(str('請(qǐng)傳id'))

@api_view(['POST'])
def addUser(request):  # 添加數(shù)據(jù)
    ser = UserSerializer(data=request.data)
    if ser.is_valid():
       ser.save()
       return Response(ser.data)
    return Response(ser.errors)

@api_view(['GET'])
def deleteUser(request):  # 根據(jù)id添加刪除
    id = request.GET['id']
    if id is not None:
        if User.objects.filter(id=id):
            User.objects.get(id=id).delete()
            return Response(str('success'))
        else:
            return Response(str('沒(méi)有此id'))
    else:
        return Response(str('請(qǐng)傳id'))

@api_view(['POST'])
def updateUser(request):  # 根據(jù)id修改數(shù)據(jù)
    if User.objects.filter(id=request.data['id']):
        user = User.objects.get(id=request.data['id'])
        ser = UserSerializer(instance=user, data=request.data)  # 注意指定參數(shù)
        if ser.is_valid():
            ser.save()
            return Response(str('success'))
        return Response(ser.errors)
    return Response(str('沒(méi)有此id'))

在urls.py中設(shè)置:

from django.conf.urls import url
from users import views as users_views
urlpatterns = [
    url(r'^getlistpic', users_views.getlistpic, name='home'),
    url(r'^getlist', users_views.getlist, name='home'),
    url(r'^addUser', users_views.addUser, name='home'),
    url(r'^deleteUser', users_views.deleteUser, name='home'),
    url(r'^updateUser', users_views.updateUser, name='home')
]

啟動(dòng)項(xiàng)目:

python manage.py runserver 127.0.0.1:8000

訪問(wèn)結(jié)果:

在這里插入圖片描述

在這里插入圖片描述

源碼地址: myDjango

參考:
創(chuàng)建第一個(gè)Django項(xiàng)目
Python用Django寫(xiě)restful api接口

到此這篇關(guān)于Django開(kāi)發(fā)RESTful API實(shí)現(xiàn)增刪改查(入門(mén)級(jí))的文章就介紹到這了,更多相關(guān)Django RESTful API增刪改查內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中弱引用的神奇用法與原理詳解

    Python中弱引用的神奇用法與原理詳解

    弱引用在很多語(yǔ)言中都存在,最常用來(lái)解決循環(huán)引用問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于Python中弱引用的神奇用法與原理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Python 裝飾器實(shí)現(xiàn)DRY(不重復(fù)代碼)原則

    Python 裝飾器實(shí)現(xiàn)DRY(不重復(fù)代碼)原則

    python的裝飾器就是一種代碼簡(jiǎn)潔的手段,在函數(shù)和方法有改動(dòng)時(shí),使得改動(dòng)量最小。這篇文章給大家介紹了Python 裝飾器實(shí)現(xiàn)DRY(不重復(fù)代碼)原則,感興趣的朋友一起看看吧
    2018-03-03
  • python scrapy簡(jiǎn)單模擬登錄的代碼分析

    python scrapy簡(jiǎn)單模擬登錄的代碼分析

    在本篇文章里小編給大家整理的是一篇關(guān)于python scrapy簡(jiǎn)單模擬登錄的代碼分析,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-07-07
  • python編程之requests在網(wǎng)絡(luò)請(qǐng)求中添加cookies參數(shù)方法詳解

    python編程之requests在網(wǎng)絡(luò)請(qǐng)求中添加cookies參數(shù)方法詳解

    這篇文章主要介紹了python編程之requests在網(wǎng)絡(luò)請(qǐng)求中添加cookies參數(shù)方法詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • python采集博客中上傳的QQ截圖文件

    python采集博客中上傳的QQ截圖文件

    這篇文章主要介紹了python采集博客中上傳的QQ截圖文件,因?yàn)槲募形臅?huì)在某些時(shí)候亂碼,例如這件的文件名QQ截圖20120926174732,所以需要采集出來(lái)修改掉,需要的朋友可以參考下
    2014-07-07
  • Python操作MySQL數(shù)據(jù)庫(kù)的示例代碼

    Python操作MySQL數(shù)據(jù)庫(kù)的示例代碼

    這篇文章主要介紹了Python操作MySQL數(shù)據(jù)庫(kù)的方法,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Python機(jī)器學(xué)習(xí)利用鳶尾花數(shù)據(jù)繪制ROC和AUC曲線

    Python機(jī)器學(xué)習(xí)利用鳶尾花數(shù)據(jù)繪制ROC和AUC曲線

    這篇文章主要為大家介紹了Python機(jī)器學(xué)習(xí)利用鳶尾花數(shù)據(jù)繪制ROC和AUC曲線實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Python Selenium自動(dòng)化獲取頁(yè)面信息的方法

    Python Selenium自動(dòng)化獲取頁(yè)面信息的方法

    這篇文章主要介紹了Python Selenium自動(dòng)化獲取頁(yè)面信息的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Python雙鏈表原理與實(shí)現(xiàn)方法詳解

    Python雙鏈表原理與實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了Python雙鏈表原理與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了Python雙鏈表的概念、原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • Python PyQt5標(biāo)準(zhǔn)對(duì)話框用法示例

    Python PyQt5標(biāo)準(zhǔn)對(duì)話框用法示例

    這篇文章主要介紹了Python PyQt5標(biāo)準(zhǔn)對(duì)話框用法,結(jié)合實(shí)例形式分析了PyQt5常用的標(biāo)準(zhǔn)對(duì)話框及相關(guān)使用技巧,需要的朋友可以參考下
    2017-08-08

最新評(píng)論

成都市| 濮阳市| 桃江县| 静海县| 伊宁县| 手游| 绥阳县| 永吉县| 新兴县| 秭归县| 松溪县| 南安市| 宁津县| 方正县| 嵩明县| 元阳县| 阿坝| 韩城市| 清镇市| 县级市| 乐安县| 东宁县| 元阳县| 木兰县| 炉霍县| 鱼台县| 陵川县| 黑水县| 五大连池市| 江源县| 犍为县| 华坪县| 曲阜市| 岳池县| 三江| 普格县| 南召县| 武安市| 梅河口市| 巴南区| 桃江县|