使用django-rest-framework我正在使用 DefaultRouter
我想为几个应用程序提供API,所以我的问题是我可以用django方式执行此操作并将我的路由器注册放在每个应用程序URLconf中,并将它们显示为一个聚合API或理想情况下以命名空间方式显示.
换句话说,如果app1包含modelA和modelB,则app2包含modelC:
mysite/app1/api和的两个路由器mysite/app2/api,或者mysite/api列出所有三个模型,然后在他们自己的应用程序中注册各个模型urls.py就像是
router = DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(include('app1.apis')
router.register(include('app2.apis')
Run Code Online (Sandbox Code Playgroud)
或者有一种简单的方法,我的路由器变量可以在每个应用程序的URLconf中可用,以便他们可以调用router.register?我不确定
urlpatterns = patterns('',
url(r'^snippets/', include('snippets.urls', namespace="snippets"))
...
url(r'^api/', include(router.urls)),
Run Code Online (Sandbox Code Playgroud)
实际上导致代码在app1/urls.py该点执行,以便它可以router.register以某种方式调用,以便最终的url调用包括所有应用程序注册以及项目注册.
UPDATE
使用Nicolas Cortot的变体option 2我得到了我的特定资源API,但它没有被列为root APIat 的可用资源myserver\api\
我假设以某种方式DefaultRouter创建它自己的页面定义并向其router.register添加条目.我当前的设置(我认为Nicholas的选项1)也创建了两个独立的路由器,只有一个可以显示为服务器根目录,下面的设置myserver\api\列出users但不是片段.
这是我目前的设置:
project urls.py:
router = DefaultRouter()
router.register(r'users', views.UserViewSet)
urlpatterns = …Run Code Online (Sandbox Code Playgroud) 我想将实例列表显示为formsetwith django-crispy-forms,bootstrap其中每个实例都显示为一行,所有字段均水平排列。
我可以找到的所有示例似乎都以垂直放置其字段的方式渲染实例。
我以为使用:
helper.form_class = 'form-horizontal'
Run Code Online (Sandbox Code Playgroud)
可能有效,但这似乎没有效果。