#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. Большое спасибо за помощь… Новичок здесь