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

#django #django-forms #django-views #django-2.1

#django #django-forms #django-просмотры #django-2.1

Вопрос:

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

Что-то вроде этого: Метод не разрешен: / [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)
  

Ответ №1:

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

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

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

 def post:
   ...
  

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

Ответ №2:

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

 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-методов этого документа

Комментарии:

1. Большое спасибо за помощь… Новичок здесь