7

API を Django - Piston から Django-TastyPie に移植しています。これに到達するまで、すべてがスムーズに進みました。

アプリのurls.py

 url(r'^upload/', Resource(UploadHandler, authentication=KeyAuthentication()), name="api-upload"),
    url(r'^result/(?P<uuid>[^//]+)/', Resource(ResultsHandler, authentication=KeyAuthentication()), name="api-result")

これはピストンを使っているので、tastyPie用のものに変更したい

url(r'^upload/', include(upload_handler.urls), name="api-upload"),
url(r'^result/(?P<uuid>[^//]+)/', include(results_handler.urls), name="api-result")

しかし、私たちはこの障害で立ち往生しています

引数 '()' およびキーワード引数 '{'uuid': 'fbe7f421-b911-11e0-b721-001f5bf19720'}' を持つ 'api-result' の逆が見つかりません。

結果のデバッグページ:

MelodyService.urls で定義された URLconf を使用して、Django は次の URL パターンを次の順序で試しました。

^melotranscript/ ^upload/ ^melotranscript/ ^result/(?P[^//]+)/ ^(?Presultshandler)/$ [name='api_dispatch_list'] ^melotranscript/ ^result/(?P[^// ]+)/ ^(?Presultshandler)/schema/$ [name='api_get_schema'] ^melotranscript/ ^result/(?P[^//]+)/ ^(?Presultshandler)/set/(?P\w [\w/;-]*)/$ [name='api_get_multiple'] ^melotranscript/ ^result/(?P[^//]+)/ ^(?Presultshandler)/(?P\w[\w/ -]*)/$ [name='api_dispatch_detail'] ^melotranscript/ ^processed/(?P. )$ ^admin/doc/ ^TOU/$ [name='TOU'] ^$ [name='index'] ^admin/ ^doc/(?P. )$ 現在の URL melotranscript/result/fbe7f421-b911-11e0-b721-001f5bf19720/ は、これらのいずれとも一致しませんでした。

問題を知っている人?それはおそらく本当にばかげた/初心者の質問です...

4

3 に答える 3

35

この問題を抱えている今後の訪問者のために、URL の名前は でapi_dispatch_listあり、API 名も指定する必要があります。

url = reverse('api_dispatch_list', kwargs={'resource_name': 'myresource', 'api_name': 'v1'})

Tastypie が提供する他の URL 名もあります

/schema/   -->  api_get_schema
/set/      -->  api_get_multiple
/$your-id/ -->  api_dispatch_detail

それらを逆呼び出しで使用できます。次のように HTML で使用できます。

{% url "api_get_schema" resource_name="myresource" api_name="v1" %}
于 2011-11-26T10:59:25.080 に答える
0

コメントを書くことができないので、ここに投稿してテンプレートに含める必要があります。

{% url "api_dispatch_list" resource_name="app_name" api_name='v1' %}?format=json

または私の場合、API部分なしでのみ機能しました

{% url "api_dispatch_list" resource_name="app_name" %}?format=json

リソースの使用可能な URL のリストを取得するには、Python シェルからリソースをインポートしてから、次のコマンドを実行します。

for url in ExampleResource().urls:
    print(url.name)

このようなものを取得する必要があります

api_dispatch_list
api_get_schema
api_get_multiple
api_dispatch_detail

詳細について、または名前空間を使用している場合は、 https://github.com/toastdriven/django-tastypie/issues/409を確認してください。

于 2014-02-22T16:31:49.903 に答える