2017-03-31 8 views
1

私はdjangoを初めて使用しており、クラスビューを理解しようとしています。クラスhttpresponseの結果は405 - django

私はurls.py(メイン)で

urls.py(Webアプリケーション):

from django.conf.urls import url 
from webapp.views import Firstapp 

urlpatterns = [ 
    url(r'^whatever$', Firstapp.as_view()), 

] 

views.py(Webアプリケーション、私が持っているWebアプリケーションフォルダ内の

from django.conf.urls import url, include 
from django.contrib import admin 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^', include('webapp.urls')), 
] 

を):

from django.shortcuts import render 
from django.views import View 
from django.http import HttpResponse 

class Firstapp(View): 

    def something(self): 
     return HttpResponse('Yes it works!') 

私が言ったように、私はなぜクラスが405エラーを返すのか理解できるように助けていただければ幸いです。ありがとうございました。 CMDは0の問題を返します。

答えて

1

Viewをサブクラス化するため、定義する唯一のメソッドはsomethingです。

Viewは、有効なhttp動詞ごとにメソッドを定義することが必要です。 (GET、POST、HEADなど)。 Firstappにはこのようなメソッドがないため、View.dispatchはhttpステータス405(メソッドは使用できません)の応答を返します。

dispatch(request, *args, **kwargs)

ビューのビューの一部 - 要求引数プラス引数を受け付け、HTTPレスポンスを返す 方法。

デフォルトの実装ではHTTPメソッドが検査され、HTTPメソッドに一致するメソッドに委任されます。 GETはget()、投稿するPOST()などに委任されます。

デフォルトでは、HEADリクエストはget()に委譲されます。 HEAD要求をGETとは異なる方法で処理する必要がある場合は、head()メソッドをオーバーライドできます。例については、他のHTTPメソッドのサポートを参照してください。

あなたsomething方法変更、この問題を解決するには、次の

def get(self, request): 
    return HttpResponse('Yes it works!') 
+0

こんにちは、はい、それは動作しますが。ありがとうございました。 –

関連する問題