代码之家  ›  专栏  ›  技术社区  ›  S.Lott

将其余部分添加到Django[关闭]

  •  50
  • S.Lott  · 技术社区  · 16 年前

    我有一个很好用的django应用程序。我正在添加REST服务。我正在寻找一些关于我的休息策略的补充信息。

    下面是一些我正在绞尽脑汁的例子。

    • 现在,我正在使用带有一堆补丁的django rest api。
    • 我正在考虑回到用Django编写返回JSON结果的视图函数。
    • 我还可以看到在Apache中过滤其余的请求,并将它们路由到一个单独的非Django服务器实例。

    请为每个答案指定一种方法,以便我们可以对其进行投票。

    11 回复  |  直到 12 年前
        1
  •  59
  •   Ali Afshar    16 年前

    我想回到简单的 在Django中编写视图函数 返回JSON结果。

    • 明确的
    • 可移植到其他框架
    • 不需要修补Django
        2
  •  30
  •   yfeldblum    15 年前

    请注意,REST不仅仅意味着JSON结果。REST本质上意味着在本机但成熟的HTTP上公开面向资源的API。我不是休息方面的专家,但下面是Rails正在做的一些事情。

    • URL应该是好的、简单的资源名称
    • 使用正确的HTTP方法
      • 标题、获取、发布、放置和删除
      • 也可以使用覆盖(表单参数“_method”将覆盖HTTP请求方法)
    • 通过接受请求头支持内容类型协商
      • 也可以使用覆盖(URL中的文件扩展名将覆盖接受请求头中的mime类型)
      • 可用的内容类型应包括XML、XHTML、HTML、JSON、YAML和其他许多适当的类型。

    例如,要获得本机HTTP支持,服务器应该响应

    GET /account/profile HTTP/1.1
    Host: example.com
    Accept: application/json
    

    因为它会对

    GET /account/profile.json HTTP/1.1
    Host: example.com
    

    它应该对

    PUT /account/profile HTTP/1.1
    Host: example.com
    
    var=value
    

    因为它会对

    POST /account/profile HTTP/1.1
    Host: example.com
    
    _method=PUT&var=value
    
        3
  •  25
  •   oliland    12 年前

    对于任何其他为Django寻找一个非常好的可插拔API应用程序的人,请确保您签出Jespern的 django-piston 在BitBucket内部使用。

    它维护得很好,有很好的追随者和一些很酷的分叉,它们执行诸如添加对分页和其他身份验证方法的支持之类的操作(现成支持OAuth)。

    更新以反映Django活塞不再保持。

        4
  •  7
  •   RickyA    13 年前

    Tastypie 也是Django新出现的REST框架。 它与活塞有着相同的思维方式,并删除了许多样板代码。

        5
  •  5
  •   Community CDub    8 年前

    我对同一个问题的回答是: Framework for Implementing REST web service in Django

    简短的版本是,看看 https://github.com/jgorset/django-respite/ 一个早期的REST框架,但是我们每天都在客户项目中使用它。

        6
  •  4
  •   Sam Corder    16 年前

    废弃django rest api,并提出您自己的开源项目,其他人可以参与其中。我愿意做出贡献。我有一些基于FormsAPI的代码来做REST。

        7
  •  3
  •   hasen    16 年前

    我想回到简单的 在Django中编写视图函数 返回JSON结果。

    我会同意的……
    阿里A总结得很好。

    对我来说,重点是要明确。我将避免使用一个自动将对象转换为JSON的函数,如果对象引用了一个用户,并且密码(即使是散列的)以某种方式进入JSON snippit,该怎么办?

        8
  •  2
  •   Parand    16 年前

    最后,我使用了自己的RESTAPI框架来支持Django(如果我能找到一个可行的替代方案的话,我希望能摆脱这个框架),为一些我不想处理的角落案例提供了一些自定义视图。结果没问题。

    因此,1和2的组合;如果没有某种形式的框架,您最终将为常见情况编写相同的样板文件。

    我还做了一些独立的API。我喜欢将它们作为独立的服务,但是它们独立于其他代码这一事实导致它们被忽视。没有技术上的原因;只是看不见,想不起来。

    我真正想看到的是一种将Django表单和RESTAPI结合在一起的方法,因为它们通常共享很多逻辑。从概念上讲,如果应用程序以HTML形式公开某些内容,那么它可能也希望以编程方式公开它。

        9
  •  2
  •   chrismi    14 年前

    你可以看看 django-dynamicresponse 这是一个轻量级框架,用于将带有JSON的RESTAPI添加到Django应用程序中。

    在现有的django应用程序中添加API支持只需要很少的更改,并且从新项目开始就直接构建API。

    基本上,除了将返回的上下文序列化为JSON或根据请求类型有条件地呈现模板/重定向之外,它还包括将JSON解析为request.post的中间件支持。

        10
  •  1
  •   Jiaaro    16 年前

    您可以尝试创建一个处理数据(如parand提到的)的通用函数,这些数据可以从生成网页的视图以及那些生成json/xml/的视图中调用。

        11
  •  1
  •   Cody    13 年前

    美味佳肴看起来很有意思,很有前途。这和姜戈很相配。