2017-03-31 43 views
1

我是django的新手,我想了解課堂觀點。class httpresponse results in 405 - django

在urls.py(主)我有:

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

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^', include('webapp.urls')), 
] 
在web應用文件夾

我有:

urls.py(web應用):

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

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

] 

views.py(web應用):

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來post()等等。

默認情況下,HEAD請求將委派給get()。如果您需要以與GET不同的方式處理HEAD請求,則可以覆蓋head()方法。有關示例,請參閱支持其他HTTP方法。

爲了解決這個問題,改變你的something方法:

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

你好,是的,它的工作原理。謝謝。 –