以下是Two Scoops of Django: Best Practices For Django 1.6的引用:
过去,我们将所有API视图代码放入专用的Django应用程序中 在一些REST视图中使用自定义逻辑调用api或apiv1, 序列化器等等。从理论上讲,这是一个非常好的方法,但在 实践它意味着我们不仅仅是为特定应用程序提供逻辑 一个地方。
我们目前的方法是依靠URL配置。当建立一个 项目范围的API我们在
views.py
模块中编写REST视图 它们变成了一个名为core/api.py
或类似的URLConfcore/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}}应该在哪里?
答案 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应用,例如flavors
,users
,它意味着您已完成的工作,他们将拥有views.py
(或{{1在其中,您可以为API和非API视图提供代码。 (这只是一个理智的命名约定,仅此而已...... Django依赖于views/*.py
告诉它如何连接url路由以查看代码)
从头开始构建像这样的东西作为学习Django的方法真的很棒。如果您正在进行严肃的REST API项目,请查看Django REST framework。