是否可以使用通用的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()),
)


通过允许系统生成模型并将其呈现到其余接口的工具。

最佳答案

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)

关于python - Django Rest Framework使用url加载指定的模型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11415404/

10-12 00:32
查看更多