Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Django Rest框架:基于函数的API序列化程序_Mysql_Django_Python 3.x_Django Rest Framework_Api Design - Fatal编程技术网

Mysql Django Rest框架:基于函数的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

未经请求,我参与了一个API项目,其要求如下:

  • 德扬戈
  • Django Rest框架
  • Python 3.5
  • API需要基于函数(因此没有类)
这里的目标是一个API,它以JSON格式返回数据(因此我只需要“读取”CRUD设计原则),供显示器内部使用

Django本身必须连接到一个默认数据库和一个遗留的MYSQL数据(这是可行的)。我已经用
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