Mysql Django Rest框架:基于函数的API序列化程序
未经请求,我参与了一个API项目,其要求如下:Mysql Django Rest框架:基于函数的API序列化程序,mysql,django,python-3.x,django-rest-framework,api-design,Mysql,Django,Python 3.x,Django Rest Framework,Api Design,未经请求,我参与了一个API项目,其要求如下: 德扬戈 Django Rest框架 Python 3.5 API需要基于函数(因此没有类) 这里的目标是一个API,它以JSON格式返回数据(因此我只需要“读取”CRUD设计原则),供显示器内部使用 Django本身必须连接到一个默认数据库和一个遗留的MYSQL数据(这是可行的)。我已经用settings.py文件完成了这项工作 然后,我创建了一个名为museum_api的新应用程序;这同样有效 之后,我借助python manage.py i
- 德扬戈
- Django Rest框架
- Python 3.5
- API需要基于函数(因此没有类)
settings.py
文件完成了这项工作
然后,我创建了一个名为museum_api
的新应用程序;这同样有效
之后,我借助python manage.py inspectdb--database=museum\u data>models.py
上面的代码生成了一个python文件,其中包含项目根文件夹“musart”中MYSQL数据库中每个表的类(该文件夹包含:manage.py、musart和museum_api)
然后,我在名为museum_api的文件夹中创建了一个静态JSON响应,并创建了一个文件:views.py
和urls.py
我将这些文件留空一秒钟,然后返回根文件夹并进入内部项目文件夹编辑其中的url.py文件。在该文件中,我添加了:
url(r'', include('museum_api.urls')),
其目的是,API是人们访问该子域时遇到的第一件事。这个也很好用
然后我回到文件夹museum\u api
,编辑views.py
文件,创建两个静态JSON响应作为测试:
from rest_framework import status, renderers
from rest_framework.decorators import api_view
from rest_framework.response import Response
from django.http import HttpResponse
from django.utils.encoding import smart_text
@api_view(['GET'])
def view(request):
return Response({"name": "HERMÄNN", "test":"mytest"})
@api_view(['GET'])
def hello_world(request):
return Response({"message": "Hello, world!"})
def index(request):
return HttpResponse("""Hello, httpresonse is here!""")
接下来,我编辑了urls.py
文件,其中包含:museum\u api:
从django.conf.url导入url
从…起导入视图
urlpatterns = [
url(r'^view$', views.view, name='view'),
url(r'^hello$', views.hello_world, name='hello_world'),
url(r'^$', views.index, name='index'),
]
到目前为止,我理解了所有的文档;无论何时运行服务器并转到url,我都会得到预期的Indexfile或两个JSON响应
在过去的几天里,我一直致力于使API具有交互性。。。这是整个项目的重点。。。我发现的所有项目和教程都使用类,这违反了核心要求之一
在这个阶段,我只有问题,没有工作代码
1) 下一步是为每个api方法创建一个函数。例如,使用名为:artist
的api方法查询所有艺术家的函数。它应该采用的参数之一是“国家”。向api请求数据的一种可能方式是:url?artist;格式=json;国家=法国
我会想到这样的东西(伪代码):
2) inmuseum\u api>views.py:为什么我需要在每个新函数之前放置一个@api\u视图['GET']
?如果我忽略它,该函数将停止工作
3) 如何编写序列化程序,以便在api收到请求(例如国家/地区示例)时,python脚本知道要查询哪些数据库并返回正确的数据
4) 与3相关:我需要在哪里创建serializers.py脚本?在my models.py所在的根文件夹中?还是在应用程序文件夹中
很抱歉问了这么长的问题。
致意
2) 在museum\u api>views.py中:为什么我需要放置@api\u视图['GET']
在每一个新功能之前?如果我忽略它,该函数将停止
工作
@api\u视图
装饰器告诉您的视图响应上面提到的HTTP方法。有关详细信息,请参阅
3) 如何编写序列化程序,以便在api收到请求时
(例如国家/地区示例)python脚本知道什么
要查询并返回正确数据的数据库
视图将使用settings.py
中的DATABASES
设置中指定的数据库
如果您正在使用多个数据库,则需要使用()设置或手动选择要查询的数据库[请参阅]
4) 与3相关:我需要在哪里创建serializers.py脚本?在里面
my models.py所在的根文件夹?还是在应用程序文件夹中?
通常的结构是
2) 在museum\u api>views.py中:为什么我需要放置@api\u视图['GET']
在每一个新功能之前?如果我忽略它,该函数将停止
工作
@api\u视图
装饰器告诉您的视图响应上面提到的HTTP方法。有关详细信息,请参阅
3) 如何编写序列化程序,以便在api收到请求时
(例如国家/地区示例)python脚本知道什么
要查询并返回正确数据的数据库
视图将使用settings.py
中的DATABASES
设置中指定的数据库
如果您正在使用多个数据库,则需要使用()设置或手动选择要查询的数据库[请参阅]
4) 与3相关:我需要在哪里创建serializers.py脚本?在里面
my models.py所在的根文件夹?还是在应用程序文件夹中?
通常的结构是
def artist_api(request):
data = select * from artists where country = 'france';
return (data)
application
-- app1
--- models.py
--- serializers.py
--- views.py
-- app2
--- models.py
--- serializers.py
--- views.py
-- application
--- settings.py
--- urls.py
-- manage.py