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 に答える