django笔记(07) | Django Rest FrameWork
为啥用DRF方式创建接口就要写META类,而传统方式就没报错?
解决:如果你使用的是 Serializer 类(而不是 ModelSerializer),并且你手动指定了所有字段,那么你不需要定义 Meta 类。
ModelSerializer
用ModelSerializer,引入了model,就不用再定义一遍字段了,model里已经定义过了
直接放META类里就行
从
1 | from rest_framework import serializers |
改为
1 | from rest_framework import serializers |
如果要全部引入,fields = '__all__'
就行
postman
感觉postman就是通过url,
如果是get,就查数据,以json格式显示,
如果是post,填写完models里定义的相关属性,就向数据库里传数据,看有没有传成功
成功以后数据库最后一行会多出一条数据
RESTful API
GET
客户端使用 GET 访问位于服务器上指定 URL 上的资源。它们可以缓存 GET 请求,并在 RESTful API 请求中发送参数以指示服务器在发送之前筛选数据。
POST
客户端使用 POST 向服务器发送数据。它们将数据表征包含到了请求中。多次发送相同的 POST 请求会造成多次创建相同资源的不良影响。
PUT
客户端使用 PUT 更新服务器上的现有资源。与 POST 不同,在 RESTful Web 服务中多次发送相同的 PUT 请求具有相同的效果。
DELETE
客户端使用 DELETE 请求删除资源。DELETE 请求可以更改服务器状态。但是,如果用户没有合适的身份验证,则请求失败。
venv下载路径
疑问:
在venv虚拟环境里下载东西,虽然之前学的时候,django是cd到django项目的文件夹里下载的,axios啥的是在前端的文件夹里下载的。
如果没有执行cd ..命令,然后转到相应的文件夹,而是直接下载了,会发生什么情况?
解决:
下载toastify-js时,虽然是前端的东西,但被我在后端下载了,后端文件夹多了个package.json,里面有toastify-js,还多了node_modules,这些运行后端根本用不着,所以没用,白下
跨域问题
在前端引入axios,在vue.config.js里配置好跨域后,运行前端项目,能显示页面,但控制台报错Proxy error: Could not proxy request /movie from localhost:8080 to http://127.0.0.1:8000/api.
在控制台旁边的网络里也接收不到response,以为接收的response就是页面里写死的一些数据
解决:
想到跨域是从前端运行的网址http://localhost:8080/
跨域到后端运行的网址http://127.0.0.1:8000/api
,那么后端肯定是需要运行的。所以在vscode里又开了一个终端,启动了mysql服务,运行了后端程序。然后就成功了。
Tips
在数据库里改完数据,项目都不用重启,页面自动就更新了
在加镜像的时候别忘了加
-i
启动后端服务之前确保打开了Mysql