网站推广方法100种,北京企业网站设计报价,wordpress文章页面500,手机上购物哪个平台比较好文章目录 项目地址一、django环境安装以及初识restful1.1 安装python 3.10的虚拟环境1.2 创建django工程文件1.3 创建一个book app1.4 序列化(Django JsonResponse)1.4.1创建一个Models1.4.2 创建django的超级用户admin1.4.3 添加serializers.py生成序列化器1.5 FBV创建视图1… 文章目录 项目地址一、django环境安装以及初识restful1.1 安装python 3.10的虚拟环境1.2 创建django工程文件1.3 创建一个book app1.4 序列化(Django JsonResponse)1.4.1创建一个Models1.4.2 创建django的超级用户admin1.4.3 添加serializers.py生成序列化器 1.5 FBV创建视图1.5.1 在app里创建django 视图1.5.2创建app的urls路由1.5.3 将app的路由注册到项目的路由1.5.4 整体流程梳理1.5.5 创建一个可以通过传递id来get/post1.5.6 使用restful风格改写views 1.6 CBV1.6.1 使用restful的APIView类来创建 二、Django restful组件研究2.1 APIView的主要作用2.1 序列化器serializer2.1.1 创建一个Book模型类2.1.2 设计book类的序列化器2.1.3 设计view,get/post请求2.1.4 将视图view添加到project路由里2.1.5 项目结构2.1.6 对单个对象进行操作 2.2 使用ModelSerializer2.3 GenericAPIView 实现增删改查2.4.1 创建多个Models 项目地址
第一章:
教程作者:Codingstrade教程地址:https://www.CSDN.com/watch?v=z6WudaByH1kt=120s代码仓库地址:所用到的框架和插件:django
djangorestfui插件django
thunder client
sqlite view第二章: 课程i地址:
https://www.bilibili.com/video/BV1z5411D7BQ?spm_id_from=333.788.videopod.episodesvd_source=791e6deaa9c8a56b1f845a0bc1431b71p=17一、django环境安装以及初识restful
1.1 安装python 3.10的虚拟环境
pipenv 安装指定版本的pythonpipenv --python 3.10另外一种方法python3.10 -m venv venv运行虚拟环境pipenv shell另一种方法.\venv\Scripts\activate安装djangopipenv install django安装所有的包requirements.txtdjango=4.0.0,4.1.0
djangorestframework
pyyaml
requests
django-cors-headers安装pip install -r requirements.txt1.2 创建django工程文件
创建项目myapi是项目的名称django-admin startproject myapi查看文件 运行django,默认localhost:8000 py manage.py runserver 1.3 创建一个book app
控制台输入py manage.py startapp book 成功后,文件夹目录 注册APP到django里 1.4 序列化(Django JsonResponse)
将数据库内容 转为python的格式
1.4.1创建一个Models
在api/models.py里创建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='')注册Modelspython manage.py makemigrations创建models表python manage.py miggrateres_api/admin.py注册我们的Modelsadmin.site.register(Post)1.4.2 创建django的超级用户admin
创建超级用户python manage.py createsuperuser创建完成之后登录到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创建视图
该模式下,不管是django原生,还是restful风格,都是函数式编程1.5.1 在app里创建django 视图
创建res_api/views.pyfrom 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创建app的urls路由
1.创建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里创建models,这个models一般对应的数据库里的数据res_api/models.py,使得python可以从数据库里取数创建完之后,将models在app的admin下面注册res_api/admin.py,让django知道这个models模型序列化Models,res_api/serializers.py,这里一般就是对表中的字段进行序列化序列化完整之后需要构建view,res_api/views.py,这里的功能是告诉django如何取到models序列化好的数据,怎么取,以什么方式来取注册app自己的路由res_api/views.py,告诉django 该app的models通过什么字段能访问将app的路由注册到project里,这样浏览器就可以通过项目的地址+app里定义的字段访问到我们的models数据至此,有个bug就是post的提交方式是和get一样,我们需要将他改为posts的方式1.5.5 创建一个可以通过传递id来get/post
rest_aip/views.py添加一个新的函数,用来处理传递的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)将我们的函数,注册到我们的app的urls里,res_api/urls.pyurlpatterns = [path('postusers/', PostUsersView), path('detials/int:pk', postuser_by_id), # using int:pk to get the id of the post
]测试,成功1.5.6 使用restful风格改写views
修改res_api/views.pyfrom 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,