2017-03-31 2 views
1

Ich bin neu in Django und ich versuche, Klassenansichten zu verstehen.Klasse httpresponse Ergebnisse in 405 - django

In urls.py (Haupt-) Ich habe:

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

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

in Webapp Ordner Ich habe:

urls.py (Webapp):

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

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

] 

views.py (Webapp):

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!') 

Wie gesagt, ich versuche zu verwenden Klassenansichten und ich würde mich freuen, wenn Sie mir helfen könnten zu verstehen, warum die Klasse 405 Fehler zurückgibt. Vielen Dank. CMD gibt 0 Probleme zurück.

Antwort

1

Da Sie Unterklasse View sind und die einzige Methode, die Sie definieren, heißt something.

View erwartet, dass Sie eine Methode für jedes gültige HTTP-Verb definieren. (GET, POST, HEAD usw.). Da Firstapp keine solche Methode hat, gibt View.dispatch eine Antwort mit dem HTTP-Status 405 (Methode nicht zulässig) zurück.

dispatch(request, *args, **kwargs)

Die Ansicht Teil der Ansicht - die Methode, die eine Anforderung Argument sowie Argumente annimmt, und gibt eine HTTP-Antwort.

Die Standardimplementierung untersucht die HTTP-Methode und versucht, sie an eine Methode zu delegieren, die der HTTP-Methode entspricht. Ein GET wird an get(), ein POST an post() und so weiter delegiert.

Standardmäßig wird eine HEAD-Anfrage an get() delegiert. Wenn Sie HEAD-Anforderungen anders als GET behandeln müssen, können Sie die Methode head() überschreiben. Ein Beispiel hierzu finden Sie unter Unterstützung anderer HTTP-Methoden.

Um dies zu beheben, Ihre something Methode ändern:

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

Hallo, Ja es funktioniert. Vielen Dank. –

Verwandte Themen