2016-12-12 28 views
0

私はdjangoの私のWebページで405エラーを取得し続けます。クラスベースのビューでエラー405

views.py

from django.shortcuts import render 
from rest_framework.views import APIView 
from rest_framework.parsers import FileUploadParser 

# Create your views here. 
class FileUploadView(APIView): 
    #parser_classes = (FileUploadParser,) 
    template_name = "list.html" 
    # def put(self, request, filename, format=None): 
    #  file_obj = request.data['file'] 
    #  # ... 
    #  # do some stuff with uploaded file 
    #  # ... 
    #  return Response(status=204) 

urls.py

from django.conf.urls import url 
from rest_framework import renderers 
from views import FileUploadView 
urlpatterns = [ 
    url(r'', FileUploadView.as_view()), 
] 

するlist.html私が必要な場合は

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <title>Minimal Django File Upload Example</title> 
    </head> 

    <body> 
     <!-- List of uploaded documents --> 
     {% if documents %} 
      <ul> 
       {% for document in documents %} 
        <li><a href="{{ document.docfile.url }}">{{ document.docfile.name }}</a></li> 
       {% endfor %} 
      </ul> 
     {% else %} 
      <p>No documents.</p> 
     {% endif %} 

     <!-- Upload form. Note enctype attribute! --> 
     <form action="{% url "list" %}" method="post" enctype="multipart/form-data"> 
      {% csrf_token %} 
      <p>{{ form.non_field_errors }}</p> 

      <p>{{ form.docfile.label_tag }} {{ form.docfile.help_text }}</p> 

      <p> 
       {{ form.docfile.errors }} 
       {{ form.docfile }} 
      </p> 

      <p><input type="submit" value="Upload"/></p> 
     </form> 
    </body> 

</html> 

わかりません私のコードをもっと投稿してください。

しかし、私は取得要求で405エラーを取得し続けます。私は何が間違っているのか分かっているかもしれませんし、もっと情報を投稿する必要があります。

ありがとうございました。

+0

テンプレートで参照する「リスト」URLとは何ですか? DRFを使用して通常のテンプレート表示に威力を発揮するのはなぜですか? –

+0

@DanielRosemanメインページにヒットしたときにロードしたいhtmlファイル – aceminer

+0

これは私の質問とは関係ないようです。あなたのテンプレートには、フォームのアクションとして '{%url" list "%}"があります。 URL定義はどこに対応していますか?なぜDRFを使っているのですか? –

答えて

2

クラス内のget()メソッドを定義してください:docsとして

def get(self, request): 
    return Response(code=200) 

は言う:

APIViewクラスを使用すると、かなりいつものように、通常のViewクラスを使用するのと同じです着信要求は、.get()や.post()などの適切なハンドラメソッドに送出されます。

ただし、APIViewクラスではhav e get()メソッドなので、任意のGETリクエストcalls http_method_not_allowed()メソッド。

関連する問題