使用Django,DRF,招搖的項目。django_rest_framwork發生「類型錯誤:'鏈接'對象不支持項目分配」
網址如下配置:
schema_view = get_swagger_view(title='Pastebin API')
urlpatterns = [
url(r'^$', schema_view),
url(r'store', include('store.urls')),
... # other urls using routers.SimplerRouter
]
和存儲/ urls.py:
router = routers.SimpleRouter()
router.register(r'', views.StoreViewSet)
urlpatterns = router.urls
和views.StoreViewSet:
class StoreViewSet(BaseObject, GenericViewSet):
permition_class =()
@list_route()
def detail(self, request):
return {}
@list_route(url_path='detail/export')
def detail_export(self, request):
return {}
後python manage.py runserver
,請訪問:http://127.0.0.1:8000/#
和類型錯誤發生:
File "/usr/local/share/.virtualenvs/dev-finance/lib/python2.7/site-packages/rest_framework_swagger/views.py", line 32, in get
schema = generator.get_schema(request=request)
File "/usr/local/share/.virtualenvs/dev-finance/lib/python2.7/site-packages/rest_framework/schemas.py", line 242, in get_schema
links = self.get_links(request)
File "/usr/local/share/.virtualenvs/dev-finance/lib/python2.7/site-packages/rest_framework/schemas.py", line 276, in get_links
insert_into(links, keys, link)
File "/usr/local/share/.virtualenvs/dev-finance/lib/python2.7/site-packages/rest_framework/schemas.py", line 79, in insert_into
target[keys[-1]] = value
TypeError: 'Link' object does not support item assignment
[ERROR] 2017-05-04 15:25:06,936 log_message(basehttp.py:131) "GET/HTTP/1.1" 500 20384
錯誤消息顯示,Link
對象不能像字典一樣分配值。
如果我將方法名稱從detail_export
重命名爲details_export
,一切都很順利。
當rest_framework的@list_route
decorater 將方法的url傳遞給Link對象時發生猜測錯誤。
爲什麼其他方法很好? 我該如何解決這個問題?
這看起來像一個名字碰撞我。這很奇怪,因爲DRF視圖集中的「細節」方法被稱爲「檢索」。它是否可以在沒有大量圖表生成的情況下工作 – Igonato
@Igonato視圖中所有方法的名稱是不同的。它的工作沒有招搖。 –
正如我的想法。如果我是你的話,我只需要帶上另一個名字。此外,在Python中,還有一個約定,在末尾添加「_」以打破名稱衝突,例如, 'print_ =「Hello world!」;打印(print_)' – Igonato