【问题标题】:Where to put REST API in Django在 Django 中放置 REST API 的位置
【发布时间】:2015-01-22 13:45:58
【问题描述】:

这是来自Two Scoops of Django: Best Practices For Django 1.6的引用:

过去,我们将所有 API 视图代码放入专用的 Django 应用程序中 称为 api 或 apiv1,在某些 REST 视图中具有自定义逻辑, 序列化程序等。从理论上讲,这是一个很好的方法,但在 实践这意味着我们对特定应用程序的逻辑不仅仅是 一个地点。

我们目前的方法是依靠 URL 配置。当建立一个 项目范围的 API,我们在 views.py 模块中编写 REST 视图,wire 将它们放入一个名为 core/api.pycore/apiv1.py 并包含项目根目录中的 urls.py 模块。这意味着我们可能有如下内容 代码:

# core/api.py

""" Called from the project root's urls.py URLConf thus:
url(r" ˆ api/", include("core.api"), namespace="api"),
"""

from django.conf.urls.defaults import patterns, url

from flavors import views as flavor_views
from users import views as user_views

urlpatterns = patterns("",
    # {% url "api:flavors" %}
    url(
        regex=r" ˆ flavors/ $ ",
        view=flavor_views.FlavorCreateReadView.as_view(),
        name="flavors"
        ),

    # {% url "api:flavors" flavor.slug %}
    url(
        regex=r" ˆ flavors/(?P<slug>[-\w]+)/ $ ",
        view=flavor_views.FlavorReadUpdateDeleteView.as_view(),
        name="flavors"
        ),

    # {% url "api:users" %}
    url(
        regex=r" ˆ users/ $ ",
        view=user_views.UserCreateReadView.as_view(),
        name="users"
        ),

    # {% url "api:users" user.slug %}
    url(
        regex=r" ˆ users/(?P<slug>[-\w]+)/ $ ",
        view=user_views.UserReadUpdateDeleteView.as_view(),
        name="users"
        ),
)

但我不明白将core/api.py 放在哪里。这是一个名为 core 的单独 Django 应用程序吗? api.py 应该坐在哪里?

【问题讨论】:

  • 这意味着将上面的文件创建为core/api.py(以及一个空的core/__init__.py),然后将url(r" ˆ api/", include("core.api"), namespace="api")行添加到根urls.py文件
  • 你不必称它为core/api.py,这只是作者的建议
  • @Anentropic,非常感谢。只需将其添加为答案,以便我接受。另外,we write the REST views in the views.py modules 是什么意思?我可以举个例子吗?

标签: python django api rest


【解决方案1】:

这意味着将您拥有的文件创建为core/api.py(以及一个空的core/__init__.py 文件),然后将url(r" ˆ api/", include("core.api"), namespace="api") 行添加到项目的根urls.py 文件中。

你不必称它为core/api.py,这只是作者的建议

我们在 views.py 模块中编写 REST 视图是什么意思?

这意味着你所做的,对于你项目中的每个 Django 应用程序,例如flavorsusers,它们将在你放置的地方有一个views.py(或views/*.py) API 和非 API 视图的代码。 (这只是一个合理的命名约定,仅此而已……Django 依靠urlpatterns 告诉它如何连接 url 路由以查看代码)

从头开始构建这样的东西作为学习 Django 的一种方式非常棒。如果您正在做一个严肃的 REST API 项目,请查看Django REST framework

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-13
    • 2015-01-28
    • 1970-01-01
    • 2017-06-09
    • 2019-05-14
    • 2013-06-02
    • 1970-01-01
    • 2015-03-05
    相关资源
    最近更新 更多