Я следую Django-Restful учебник here, и я следующий код, написанныйПочему при вызове API Django возникает непредвиденная ошибка аргументов ключевого слова?
в views.py:
from snippets.models import Snippet
from snippets.serializers import SnippetSerializer
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
@api_view(['GET','POST'])
def snippet_list(request, format=None):
"""
List all snippets, or create a new snippet.
"""
if request.method == 'GET':
snippets = Snippet.objects.all()
serializer = SnippetSerializer(snippets, many=True)
return Response(serializer.data)
elif request.method == 'POST':
serializer = SnippetSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data,status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
в urls.py:
from django.conf.urls import url
from snippets import views
from rest_framework.urlpatterns import format_suffix_patterns
urlpatterns = [
url(r'^snippets/$',views.snippet_list),
url(r'^snippets/(?P<pk>[0-9]+)/$',views.snippet_detail)
]
urlpatterns = format_suffix_patterns(urlpatterns)
Когда я бегу сервер, я могу получить нормальный http://127.0.0.1:8000/snippets/, чтобы вернуть стандартный ответ JSON, но когда я попытаюсь получить доступ к
http http://127.0.0.1:8000/snippets.json # JSON suffix
http http://127.0.0.1:8000/snippets.api # Browsable API suffix
Я получаю сообщение об ошибке, которое дает этот отслеживающий:
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/snippets.json
Django Version: 1.9.7
Python Version: 2.7.6
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'snippets',
'quickstart']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "/home/myname/workspace/restTutorial/env/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
149. response = self.process_exception_by_middleware(e, request)
File "/home/myname/workspace/restTutorial/env/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
147. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/myname/workspace/restTutorial/env/local/lib/python2.7/site-packages/django/views/decorators/csrf.py" in wrapped_view
58. return view_func(*args, **kwargs)
Exception Type: TypeError at /snippets.json
Exception Value: snippet_list() got an unexpected keyword argument 'format'
Почему я получаю эту ошибку?
Edit: ссылка на settings.py
Вы можете разместить свои настройки – marcusshep
Вот копия файла на pastebin: http://pastebin.com/kvTvaY6V. –
@ user1362215 Вам нужно затенять секретный ключ, когда вы публикуете свои настройки. А затем обновите вопрос по этой ссылке. –