質問

Is it possible to use generic url settings to implement the django rest interface for all models in django?

So instead of per model configuration:

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)),
)

A more generic type of loading:

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

With something that allows the system to generate the model and render it to the rest interface.

役に立ちましたか?

解決

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)),
)

in more general way the solution would look like this (sorry - i wrote it by hand), but you still need to import these models and form the model tuple by hand.

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)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top