【发布时间】: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.py或core/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是什么意思?我可以举个例子吗?