私は現在2つのアプリでtastypieを使用しています。これらのアプリのそれぞれには、Groupというモデルがあります。それらは非常に異なって動作し、唯一の類似点は「グループ」という名前です。Tastypieリソース名の衝突
1つまたは他のアプリだけがurlsファイルに追加されると、それは魅力のように機能します。しかし、両方のアプリケーションを追加するとすぐに名前の衝突が発生し、get_resource_uri()メソッドが間違った文字列を返します。私はこのコードを参照してくださいtastypieレポで現在api.pyファイルの行37に
urls.py
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
ここではいくつかのコードがあります私のグループリソースはresource_nameの 'group'を持ち、別々のURLに登録されているにもかかわらず、互いの上に登録されます。実際のリソース名を変更するだけでなく、この名前の衝突を回避する方法はありますか?
/myapp1/1.0/group/
/myapp2/1.0/group/
理想的には私がmyapp1とmyapp2(すなわちグループクラスは別個のものである)お互いを知ってほしくない:
更新 URIは次のようになります。これの回避策はmyapp2.Groupをmyapp2.MyGroup(名前の衝突を避けるため)に変更することですが、実際にはそれほどエレガントではありません。
リソースメタ名にresource_nameを設定していますか?そうしないと、クラス名がデフォルトになります。 http://django-tastypie.readthedocs.org/en/latest/tutorial.html#creating-resources – JamesO
私はそうではありません。私はできると思いますが、URLが変更されない場合は、リソース名をクラス名と同じにすることをお勧めします。残念ながら、Metaのリソース名を変更すると、そのクラスのAPI URLにも影響します。 – Gevious
両方のリソースURIは何ですか?私。どのURLにアクセスしていますか? – kgr