栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Django REST框架:非模型序列化器

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django REST框架:非模型序列化器

即使没有将Django-rest-frame绑定到模型,它也可以很好地工作。你的方法听起来不错,但我相信你可以减少一些步骤,以使所有工作正常进行。

例如,rest框架带有一些内置的渲染器。开箱即用,它可以将JSON和XML返回给API使用者。你还可以通过仅安装所需的python模块来启用YAML。Django-rest-framework将输出任何基本对象,例如dict,list和tuple,而无需你进行任何额外的工作。

因此,基本上,你只需要创建带有参数的函数或类,执行所有必需的计算并将结果以元组形式返回到REST api视图即可。如果JSON和/或XML满足你的需求,则django-rest-framework将为你处理序列化。

在这种情况下,你可以跳过第2步和第3步,仅使用一个类进行计算,而使用一个类向API使用者进行演示。

以下几段代码可能会对你有所帮助:

请注意,我尚未对此进行测试。它仅作为示例,但是应该可以工作:)

CalcClass:

class CalcClass(object):    def __init__(self, *args, **kw):        # Initialize any variables you need from the input you get        pass    def do_work(self):        # Do some calculations here        # returns a tuple ((1,2,3, ), (4,5,6,))        result = ((1,2,3, ), (4,5,6,)) # final result        return result

REST视图:

from rest_framework.views import APIViewfrom rest_framework.response import Responsefrom rest_framework import statusfrom MyProject.MyApp import CalcClassclass MyRESTView(APIView):    def get(self, request, *args, **kw):        # Process any get params that you may need        # If you don't need to process get params,        # you can skip this part        get_arg1 = request.GET.get('arg1', None)        get_arg2 = request.GET.get('arg2', None)        # Any URL parameters get passed in **kw        myClass = CalcClass(get_arg1, get_arg2, *args, **kw)        result = myClass.do_work()        response = Response(result, status=status.HTTP_200_OK)        return response

你的urls.py:

from MyProject.MyApp.views import MyRESTViewfrom django.conf.urls.defaults import *urlpatterns = patterns('',    # this URL passes resource_id in **kw to MyRESTView    url(r'^api/v1.0/resource/(?P<resource_id>d+)[/]?$', login_required(MyRESTView.as_view()), name='my_rest_view'),    url(r'^api/v1.0/resource[/]?$', login_required(MyRESTView.as_view()), name='my_rest_view'),)

当你访问http://example.com/api/v1.0/resource/?format=json时,此代码应输出列表列表。如果使用的是后缀,可以替代?format=json使用.json。你还可以通过在标头中添加”Content-type”或”Accept”来指定希望获取的编码。

[  [    1,     2,     3  ],   [    4,     5,     6  ]]

希望这可以帮助你。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/400454.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号