현재 2 개의 앱으로 tastypie를 사용하고 있습니다. 각 앱에는 그룹이라는 모델이 있습니다. 그들은 매우 다르게 운영되며 유일한 유사성은 '그룹'이라는 이름입니다.Tastypie 리소스 이름 충돌
하나 또는 다른 앱만 URL 파일에 추가되면 매력처럼 작동합니다. 그러나 두 앱을 모두 추가하자마자 이름 충돌이 발생하고 get_resource_uri() 메소드가 잘못된 문자열을 반환합니다. 여기에 몇 가지 코드 :
urls.py
이 코드 참조 tastypie의 repo에서 현재 api.py 파일의 라인 (37)에from myapp1.resources import GroupResource as gr_a
from myapp2.resources import GroupResource as gr_b
myapp1_api = Api(api_name='1.0')
myapp1_api.register(gr_a())
myapp2_api = Api(api_name='1.0')
myapp2_api.register(gr_b())
: 모두 때문에
if resource_name is None:
raise ImproperlyConfigured("Resource %r must define a 'resource_name'." % resource)
self._registry[resource_name] = resource
을 내 그룹 리소스는 group_name의 resource_name을 가지며 별도의 URL에 등록되어 있어도 서로 위에 겹쳐서 등록됩니다. 실제 리소스 이름을 변경하는 것 외에도이 이름 충돌을 피할 수있는 방법이 있습니까?
업데이트 URI를 이런 모양 일 :
/myapp1/1.0/group/
/myapp2/1.0/group/
가 이상적으로는 myapp1 및 myapp2가 서로에 대해 알고 싶지 않아 (즉, 그룹 클래스는 구별된다). 이 문제를 해결하려면 myapp2.Group을 myapp2.MyGroup (이름 충돌을 방지하기 위해)으로 변경하는 것이지만 실제로는 그렇게 우아하지 않습니다.
리소스 meta_name에 resource_name을 설정하고 있습니까? 그렇지 않으면 클래스 이름이 기본값이됩니다. http://django-tastypie.readthedocs.org/en/latest/tutorial.html#creating-resources – JamesO
저는 아닙니다. 내가 할 수있을 것 같아요하지만 URL이 변경되지 않은 경우 선호하기 때문에 클래스 이름과 같은 리소스 이름을 원합니다. 불행하게도 Meta에서 리소스 이름을 변경하면 해당 클래스의 api url에도 영향을줍니다. – Gevious
둘 다에 대한 리소스 URI는 무엇입니까? 나는. 어떤 URL에 액세스합니까? – kgr