Недопустимый метод: / (метод Django-Post)

Когда я отправляю форму, в консоли отображается сообщение «Метод запрещен: /».

Примерно так: Метод запрещен: / [17 / Mar / 2019 18:31:18] "POST / HTTP / 1.1" 405


Я использую это в файле views.py ..

class UrlAccpt(View):

    template_name='phc/url_accpt.html'

    def get(self,request):
        urlx=''
        form = UrlForm(request.POST)
        if request.method == 'POST':
            form = UrlForm(request.POST)
            if form.is_valid():
                urlx= form.cleaned_data['EnterTheUrl']

        form = UrlForm(request.POST)

    response = TemplateResponse(request,self.template_name,{'form':form,'value':urlx})
    return response

и в файле forms.py ... я использую этот код

from django import forms


class UrlForm(forms.Form):

    EnterTheUrl=forms.CharField(max_length=1000)


person suraj sharma    schedule 17.03.2019    source источник


Ответы (2)


Добро пожаловать в представления на основе классов:

Вам необходимо указать функцию публикации в своем классе. Функция Get запускается только для метода GET, а не для запроса POST.

Добавьте следующую функцию и переместите сюда логику публикации ...

def post:
   ...

Взгляните на документы

person webbyfox    schedule 17.03.2019

Представления на основе классов не работают. Вы должны определить метод для каждого типа http-метода, который вы хотите охватить (по крайней мере, если вы просто наследуете от View) класса. Итак, определите метод в своем представлении на основе классов для такой публикации, и он будет работать

class UrlAccpt(View):

    template_name='phc/url_accpt.html'

    def get(self,request):
        urlx=''
        form = UrlForm()

   def post(self,request, *args, **kwargs):
        form = UrlForm(request.POST)
        if form.is_valid():
            urlx= form.cleaned_data['EnterTheUrl']

Вы можете прочитать об этом в разделе Поддержка других методов HTTP в этот документ

person Nafees Anwar    schedule 17.03.2019
comment
Большое спасибо за помощь ... Нуб здесь - person suraj sharma; 17.03.2019