代理注冊公司怎么樣成都抖音seo
文章目錄
- 項目地址
- 一、django環(huán)境安裝以及初識restful
- 1.1 安裝python 3.10的虛擬環(huán)境
- 1.2 創(chuàng)建django工程文件
- 1.3 創(chuàng)建一個book app
- 1.4 序列化(Django JsonResponse)
- 1.4.1創(chuàng)建一個Models
- 1.4.2 創(chuàng)建django的超級用戶admin
- 1.4.3 添加serializers.py生成序列化器
- 1.5 FBV創(chuàng)建視圖
- 1.5.1 在app里創(chuàng)建django 視圖
- 1.5.2創(chuàng)建app的urls路由
- 1.5.3 將app的路由注冊到項目的路由
- 1.5.4 整體流程梳理
- 1.5.5 創(chuàng)建一個可以通過傳遞id來get/post
- 1.5.6 使用restful風(fēng)格改寫views
- 1.6 CBV
- 1.6.1 使用restful的APIView類來創(chuàng)建
- 二、Django restful組件研究
- 2.1 APIView的主要作用
- 2.1 序列化器serializer
- 2.1.1 創(chuàng)建一個Book模型類
- 2.1.2 設(shè)計book類的序列化器
- 2.1.3 設(shè)計view,get/post請求
- 2.1.4 將視圖view添加到project路由里
- 2.1.5 項目結(jié)構(gòu)
- 2.1.6 對單個對象進行操作
- 2.2 使用ModelSerializer
- 2.3 GenericAPIView 實現(xiàn)增刪改查
- 2.4.1 創(chuàng)建多個Models
項目地址
第一章:
- 教程作者:Codingstrade
- 教程地址:
https://www.CSDN.com/watch?v=z6WudaByH1k&t=120s
- 代碼倉庫地址:
- 所用到的框架和插件:
django
djangorestfui
- 插件
django
thunder client
sqlite view
第二章:
課程i地址:
https://www.bilibili.com/video/BV1z5411D7BQ?spm_id_from=333.788.videopod.episodes&vd_source=791e6deaa9c8a56b1f845a0bc1431b71&p=17
一、django環(huán)境安裝以及初識restful
1.1 安裝python 3.10的虛擬環(huán)境
- pipenv 安裝指定版本的python
pipenv --python 3.10
- 另外一種方法
python3.10 -m venv venv
- 運行虛擬環(huán)境
pipenv shell
- 另一種方法
.\venv\Scripts\activate
- 安裝django
pipenv install django
- 安裝所有的包
requirements.txt
django>=4.0.0,<4.1.0
djangorestframework
pyyaml
requests
django-cors-headers
- 安裝
pip install -r requirements.txt
1.2 創(chuàng)建django工程文件
- 創(chuàng)建項目
myapi
是項目的名稱
django-admin startproject myapi
-
查看文件
-
運行django,默認l
ocalhost:8000
py manage.py runserver
1.3 創(chuàng)建一個book app
- 控制臺輸入
py manage.py startapp book
-
成功后,文件夾目錄
-
注冊APP到django里
1.4 序列化(Django JsonResponse)
將數(shù)據(jù)庫內(nèi)容 轉(zhuǎn)為python的格式
1.4.1創(chuàng)建一個Models
- 在
api/models.py
里創(chuàng)建
from django.db import models# Create your models here.
class Post(models.Model):title = models.CharField(max_length=120)author = models.CharField(max_length=120)email = models.EmailField( default='')
- 注冊Models
python manage.py makemigrations
- 創(chuàng)建models表
python manage.py miggrate
res_api/admin.py
注冊我們的Models
admin.site.register(Post)
1.4.2 創(chuàng)建django的超級用戶admin
- 創(chuàng)建超級用戶
python manage.py createsuperuser
- 創(chuàng)建完成之后登錄到
http://127.0.0.1:8000/admin/
- 成功之后在post里添加一個用戶,用于我們將來的測試
1.4.3 添加serializers.py生成序列化器
- 在
serializers.py
文件里添加
from rest_framework import serializers
from .models import Post class PostSerializer(serializers.ModelSerializer):class Meta:model = Postfields = ['title', 'author', 'email']
1.5 FBV創(chuàng)建視圖
- 該模式下,不管是django原生,還是restful風(fēng)格,都是函數(shù)式編程
1.5.1 在app里創(chuàng)建django 視圖
- 創(chuàng)建
res_api/views.py
from django.shortcuts import render
from .models import Post
from .serializers import PostSerializer
from django.http import JsonResponse
from rest_framework.parsers import JSONParser
from django.views.decorators.csrf import csrf_exempt #測試postman使用# Create your views here.
@csrf_exempt
def PostsView(request):if request.method == 'GET':posts = Post.objects.all()serializer = PostSerializer(posts, many=True)return JsonResponse(serializer.data, safe=False)elif request.method == 'POST':post_data = JSONParser().parse(request)serializer = PostSerializer(data=post_data)if serializer.is_valid():serializer.save()return JsonResponse(serializer.data, status=201)return JsonResponse(serializer.errors, status=400)
1.5.2創(chuàng)建app的urls路由
1.創(chuàng)建res_api/urls.py
:注意,這里的只是app的路由 ,并不是項目的路由,
from django.urls import path
from .views import PostsViewurlpatterns = [path('posts/', PostsView),
]
1.5.3 將app的路由注冊到項目的路由
1.drf/urls.py
里添加
from django.contrib import admin
from django.urls import path,includeurlpatterns = [path('admin/', admin.site.urls),path('', include('res_api.urls')),
]
1.5.4 整體流程梳理
- 在app里創(chuàng)建models,這個models一般對應(yīng)的數(shù)據(jù)庫里的數(shù)據(jù)
res_api/models.py
,使得python可以從數(shù)據(jù)庫里取數(shù) - 創(chuàng)建完之后,將models在app的admin下面注冊
res_api/admin.py
,讓django知道這個models模型 - 序列化Models,
res_api/serializers.py
,這里一般就是對表中的字段進行序列化 - 序列化完整之后需要構(gòu)建view,
res_api/views.py
,這里的功能是告訴django如何取到models序列化好的數(shù)據(jù),怎么取,以什么方式來取 - 注冊app自己的路由
res_api/views.py
,告訴django 該app的models通過什么字段能訪問 - 將app的路由注冊到project里,這樣瀏覽器就可以通過項目的地址+app里定義的字段訪問到我們的models數(shù)據(jù)
- 至此,有個bug就是post的提交方式是和get一樣,我們需要將他改為posts的方式
1.5.5 創(chuàng)建一個可以通過傳遞id來get/post
rest_aip/views.py
添加一個新的函數(shù),用來處理傳遞的id
@csrf_exempt
def postuser_by_id(request, pk):try:post = PostUsers.objects.get(pk=pk)except PostUsers.DoesNotExist:return HttpResponse(status=404)if request.method == 'GET':serializer = PostSerializer(post)return JsonResponse(serializer.data)elif request.method == 'PUT':post_data = JSONParser().parse(request)serializer = PostSerializer(post, data=post_data)if serializer.is_valid():serializer.save()return JsonResponse(serializer.data)return JsonResponse(serializer.errors, status=400)elif request.method == 'DELETE':post.delete()return HttpResponse(status=204)
- 將我們的函數(shù),注冊到我們的app的urls里,
res_api/urls.py
urlpatterns = [path('postusers/', PostUsersView), path('detials/<int:pk>', postuser_by_id), # using <int:pk> to get the id of the post
]
- 測試,成功
1.5.6 使用restful風(fēng)格改寫views
- 修改
res_api/views.py
from django.shortcuts import render
from .models import PostUsers
from .serializers import PostSerializer
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status@api_view(['GET', 'POST'])
def PostUsersView(request):if request.method == 'GET':posts = PostUsers.objects.all() #quertSetserializer = PostSerializer(posts, many=True)return Response(serializer.data)elif request.method == 'POST':serializer = PostSerializer(data=request.data)if serializer.is_valid():serializer.save()return Response(serializer.data, status=status.HTTP_201_CREATED)return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)@api_view(['GET', 'PUT', 'DELETE'])
def postuser_by_id(request,