Ich arbeite gerade an einem Django-Projekt mit django-rest-framewok Versionierung. Ich bin mit einem seltsamen Problem konfrontiert, das unerwartete Schlüsselwortargument genannte Version sagt.TypeError at/api/v1/accounts/me/getMe() hat ein unerwartetes Schlüsselwortargument 'version'
views.py
class UserViewSet(viewsets.ModelViewSet):
queryset = ScreenShotUser.objects.all()
serializer_class = UserSerializer
def getMe(self,request):
user = ScreenShotUser.objects.get(pk=request.user.id)
return Response(user)
Projekt url.py
router = routers.DefaultRouter()
router.register(r 'users', views.UserViewSet)
urlpatterns = [
url(r '^api/(?P<version>(v1|v2))/accounts/', include('Accounts.urls')),
]
und Die urls.py Konten Anwendung
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^me/$', views.getMe),
]
, wenn ich rufe http://127.0.0.1:8000/api/v1/accounts/me/ Ich habe Fehler wie diese
TypeError at /api/v1/accounts/me/
getMe() got an unexpected keyword argument 'version'
Request Method: GET
Request URL: http://127.0.0.1:8000/api/v1/accounts/me/
Django Version: 1.9.4
Exception Type: TypeError
Exception Value:
getMe() got an unexpected keyword argument 'version'
Exception Location: /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/core/handlers/base.py in get_response, line 147
Python Executable: /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5
Python Version: 3.5.1
Python Path:
['/Working_repo/screenshot/ScreenShot',
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django_contrib_requestprovider-1.0.1-py3.5.egg',
'/Working_repo/screenshot/ScreenShot',
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python35.zip',
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5',
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/plat-darwin',
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload',
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages']
Server time: Mon, 28 Mar 2016 13:12:54 +0000
Django-Experten geben Sie mir bitte den Hinweis, dass ich vermisse.
TIAEDIT Ich habe Lösungskonzept Form Antwort des Shang Wang bekam und dies wird meine Lösung
@api_view(['GET'])
def getMe(request, version):
user = ScreenShotUser.objects.get(pk=request.user.id)
result = UserSerializer(user).data
return Response(result)
Vielen Dank für Ihre Antwort. Ich habe Ihre Lösung nicht gelöst, die Parameter in meiner URL klar entfernt. Können Sie es bitte erklären – Amir
Wenn Ihre Lösung Versionsparameter von URL entfernt, dann ist es nicht möglich, weil eine Menge von API Versionsparameter jetzt außer getMe Methode verwendet. Also, was sollte ich für getMe Methode tun – Amir
Ich habe meine Antwort bearbeitet. –