在Django中放置REST API的位置

时间:2014-11-24 18:32:43

标签: python django api rest

以下是Two Scoops of Django: Best Practices For Django 1.6的引用:

  

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

     

我们目前的方法是依靠URL配置。当建立一个   项目范围的API我们在views.py模块中编写REST视图   它们变成了一个名为core/api.py或类似的URLConf   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的位置。这是一个名为api.py的独立Django应用程序吗? {{1}}应该在哪里?

1 个答案:

答案 0 :(得分:2)

这意味着创建您拥有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(或{{1在其中,您可以为API和非API视图提供代码。 (这只是一个理智的命名约定,仅此而已...... Django依赖于views/*.py告诉它如何连接url路由以查看代码)

从头开始构建像这样的东西作为学习Django的方法真的很棒。如果您正在进行严肃的REST API项目,请查看Django REST framework