2

Я следую 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

+0

Вы можете разместить свои настройки – marcusshep

+0

Вот копия файла на pastebin: http://pastebin.com/kvTvaY6V. –

+0

@ user1362215 Вам нужно затенять секретный ключ, когда вы публикуете свои настройки. А затем обновите вопрос по этой ссылке. –

ответ

0

Проблема в том, что я имел дублирующие функции в views.py файле с различными декораторов, которые были вблизи дна. Их устранение решило проблему.

 Смежные вопросы

  • Нет связанных вопросов^_^