Python 在Django中构建API服务

Python 在Django中构建API服务,python,django,api,Python,Django,Api,我想使用Django构建一个API服务。基本工作流如下所示: 首先,http请求转到http://mycompany.com/create?id=001&callback=http://callback.com. 它将在服务器上创建一个名为001的文件夹 第二,如果文件夹不存在,将创建它。您可以立即得到XML格式的响应。它看起来像: <?xml version="1.0" encoding="UTF-8"?> <response> <status>

我想使用Django构建一个API服务。基本工作流如下所示:

首先,http请求转到http://mycompany.com/create?id=001&callback=http://callback.com. 它将在服务器上创建一个名为001的文件夹

第二,如果文件夹不存在,将创建它。您可以立即得到XML格式的响应。它看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<response>
    <status>
        <statusCode>0</statusCode>
        <message>Success</message>
    </status>
    <group id="001"/>
</response>
返回XML响应。我有一个XML模板,其中包含statusCode、statusMessage、groupId占位符

<?xml version="1.0" encoding="UTF-8"?> 
<response>
    <status>
        <statusCode>{{ statusCode }}</statusCode>
        <message>{{ statusMessage }}</message>
    </status>
    {% if not statusCode %}
        <group id="{{ groupId }}"/>
    {% endif %} 
</response>
但以这种方式,我必须将步骤3放在步骤2之前,因为否则,如果是在return语句之后,步骤3将不会执行


谁能给我一些建议怎么做?谢谢。

我觉得你可能错过了一些Django的基本知识

为什么create.py在url中

如果您使用的是Django的url路由和视图,render_to_响应应该可以正常工作。关于为什么你的回复没有得到回复,你可能会得出错误的结论

我不确定我是否理解这句话:

但这样的话,我必须把第三步 在步骤2之前,因为否则步骤 如果是在之后,则不会执行3 返回语句

步骤3不在return语句之后。它是return语句的一部分

您始终可以这样做来分割流程:

# Code that creates folder, statusCode, statusMessage, groupId
response = render_to_response('create.xml', {'statusCode': statusCode,
                                                   'statusMessage': statusMessage,
                                                   'groupId': groupId,
                                                   }, mimetype = 'text/xml')
# Some other code, maybe an import pdb; pdb.set_trace() 
# So that you can inspect the response inside of a python shell.
return response

我有一种感觉,你可能错过了一些Django的基本原理

为什么create.py在url中

如果您使用的是Django的url路由和视图,render_to_响应应该可以正常工作。关于为什么你的回复没有得到回复,你可能会得出错误的结论

我不确定我是否理解这句话:

但这样的话,我必须把第三步 在步骤2之前,因为否则步骤 如果是在之后,则不会执行3 返回语句

步骤3不在return语句之后。它是return语句的一部分

您始终可以这样做来分割流程:

# Code that creates folder, statusCode, statusMessage, groupId
response = render_to_response('create.xml', {'statusCode': statusCode,
                                                   'statusMessage': statusMessage,
                                                   'groupId': groupId,
                                                   }, mimetype = 'text/xml')
# Some other code, maybe an import pdb; pdb.set_trace() 
# So that you can inspect the response inside of a python shell.
return response

您可以用于te队列问题

您可以用于te队列问题

谢谢您的回答。是的,应该是http://mycompany.com/create?params... 我还在URL.py中定义了URL。我的意思是,呈现XML和创建文件夹是两个独立的步骤。我想在HTTP请求之后立即返回XML,然后创建文件夹。创建文件夹后应进行回调。好的。你可能得设计一些有创意的东西。如果你想在以后创建文件夹,你需要等待文件夹的队列。队列的数据必须在请求之间保持。您可能希望创建一个模型,例如FolderQueue,在其中存放所有要创建的文件夹。因为它是一个成熟的模型,所以您可以非常健壮地使用它,并跟踪创建它的各种数据、创建时间、名称等。可能不是最简单的,但由于orm,它非常健壮并且仍然非常容易实现。另一种选择是在会话中隐藏数据,但这会带来麻烦。使用queue方法,它至少有点惯用和自我记录,而不是一个捏造的黑客;谢谢你的回答。是的,应该是http://mycompany.com/create?params... 我还在URL.py中定义了URL。我的意思是,呈现XML和创建文件夹是两个独立的步骤。我想在HTTP请求之后立即返回XML,然后创建文件夹。创建文件夹后应进行回调。好的。你可能得设计一些有创意的东西。如果你想在以后创建文件夹,你需要等待文件夹的队列。队列的数据必须在请求之间保持。您可能希望创建一个模型,例如FolderQueue,在其中存放所有要创建的文件夹。因为它是一个成熟的模型,所以您可以非常健壮地使用它,并跟踪创建它的各种数据、创建时间、名称等。可能不是最简单的,但由于orm,它非常健壮并且仍然非常容易实现。另一种选择是在会话中隐藏数据,但这会带来麻烦。使用queue方法,它至少有点惯用和自我记录,而不是一个捏造的黑客;谢谢,那应该会有帮助。谢谢,那应该会有帮助。