2012-07-10 7 views
1

django의 모든 모델에 대해 django rest 인터페이스를 구현하기 위해 일반 URL 설정을 사용할 수 있습니까? Django Rest 특정 모델을로드하기 위해 url을 사용하는 프레임 워크

그래서 그 대신의 모델 구성에 따라

:로드

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

.

답변

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)