Django和Tastypie的反向URL问题
我们正在将API从Django-活塞移植到Django-TastyPie。一切都很顺利,'直到我们做到这一点: 应用程序的url.pyDjango和Tastypie的反向URL问题,django,django-piston,tastypie,Django,Django Piston,Tastypie,我们正在将API从Django-活塞移植到Django-TastyPie。一切都很顺利,'直到我们做到这一点: 应用程序的url.py url(r'^upload/', Resource(UploadHandler, authentication=KeyAuthentication()), name="api-upload"), url(r'^result/(?P<uuid>[^//]+)/', Resource(ResultsHandler, authentication
url(r'^upload/', Resource(UploadHandler, authentication=KeyAuthentication()), name="api-upload"),
url(r'^result/(?P<uuid>[^//]+)/', Resource(ResultsHandler, authentication=KeyAuthentication()), name="api-result")
url(r'^upload/',资源(UploadHandler,authentication=KeyAuthentication()),name=“api upload”),
url(r'^result/(?P[^/]+)/”,资源(ResultsHandler,authentication=KeyAuthentication()),name=“api结果”)
这使用活塞,所以我们想把它改成适合tastyPie的东西
url(r'^upload/', include(upload_handler.urls), name="api-upload"),
url(r'^result/(?P<uuid>[^//]+)/', include(results_handler.urls), name="api-result")
url(r'^upload/),包括(upload\u handler.url),name=“api upload”),
url(r'^result/(?P[^/]+)/),包括(results_handler.url),name=“api result”)
但我们被困在这个错误上
找不到参数为“()”且关键字参数为“{'uuid':'fbe7f421-b911-11e0-b721-001f5bf19720'}”的“api结果”的反转
以及结果的调试页面:
Django使用MelodyService.URL中定义的URLconf,按以下顺序尝试了这些URL模式:
^melotranscript/^upload/
^melotranscript/^result/(?P[^/]+)/^(?presltshandler)/$[name='api\u dispatch\u list']
^melotranscript/^result/(?P[^/]+)/^(?presltshandler)/schema/$[name='api\u get\u schema']
^melotranscript/^result/(?P[^/]+)/^(?presltshandler)/set/(?P\w[\w/;-]*)/$[name='api'u get\u multiple']
^melotranscript/^result/(?P[^/]+)/^(?presltshandler)/(?P\w[\w/-]*)/$[name='api\u dispatch\u detail']
^melotranscript/^processed/(?P.)$
^管理员/文件/
^TOU/$[name='TOU']
^$[name='index']
^管理员/
^doc/(?P.)$
当前URL melotranscript/result/fbe7f421-b911-11e0-b721-001f5bf19720/与其中任何一个都不匹配
知道这个问题的人?这可能是一个非常愚蠢的问题 Django'include'不支持名称。您可以在以下位置找到的Tastypie URL的名称:Resource.base_URL()对于有此问题的未来访问者,URL的名称为
api_dispatch_list
,您还需要指定api名称:
url = reverse('api_dispatch_list', kwargs={'resource_name': 'myresource', 'api_name': 'v1'})
还有其他URL名称:
您可以在调用reverse时使用它们,也可以在HTML中使用它们,如下所示:
{% url "api_get_schema" resource_name="myresource" api_name="v1" %}
我不能写评论,所以我必须在这里发布 要将其包含在模板中,您应该执行以下操作
{% 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 shell导入资源,然后执行以下命令
for url in ExampleResource().urls:
print(url.name)
你应该得到这样的东西
api_dispatch_list
api_get_schema
api_get_multiple
api_dispatch_detail
有关更多详细信息,或者如果您正在使用命名空间,请检查此项
是否可以在django模板中使用上面的
{%…%}
而不是python代码?哇,没有这篇文章很难理解。谢谢
api_dispatch_list
api_get_schema
api_get_multiple
api_dispatch_detail