1

是否可以使用通用 url 设置为 django 中的所有模型实现 django rest 接口?

因此,而不是每个模型配置:

class BlogResource(ModelResource):
    model = Blog

urlpatterns = patterns('',
    url(r'^Blog/$', ListOrCreateModelView.as_view(resource=BlogResource)),
    url(r'^Blog/(?P<pk>[^/]+)/$', InstanceModelView.as_view(resource=BlogResource)),
)

更通用的加载类型:

urlpatterns = patterns('',
    url(r'^(?P<model>\w+)/$', GenericView.render_model_list()),
    url(r'^(?P<model>\w+)/(?P<pk>[^/]+)/$', GenericView.render_model()),
)

使用允许系统生成模型并将其渲染到其余接口的东西。

4

1 回答 1

1
class BlogResource(ModelResource):
    model = Blog

urlpatterns = patterns('',
    url(r'^Blog/$', ListOrCreateModelView.as_view(resource=BlogResource)),
    url(r'^Blog/(?P<pk>[^/]+)/$', InstanceModelView.as_view(resource=BlogResource)),
)

以更一般的方式,解决方案看起来像这样(抱歉 - 我是手动编写的),但您仍然需要导入这些模型并手动形成模型元组。

from django.conf.urls.defaults import patterns, url
from models import Model1, Model2, Model3

urlconf = ['', ]

for obj in (Model1, Model2, Model3):
    name = obj.__class__.__name__
    ResourceClass = type('%sResource' % name, (obj,), {
        'model': obj,
    })
    urlconf.append(url(r'^%s/$' % name, ListOrCreateModelView.as_view(resource=ResourceClass)))
    urlconf.append(url(r'^%s/(?P<pk>[^/]+)/$' % name, ListOrCreateModelView.as_view(resource=ResourceClass)))
urlpatterns = patterns(urlconf)
于 2012-07-11T11:23:42.830 回答