Я создал [казалось бы] прямолинейную форму для клиентов, однако, после того, как пользователь отправил форму, когда я пытаюсь проверить возвращаемый запрос м- Я получаю:Django: «request» не содержит «метод» (POST/GET)
исключения Тип: AttributeError исключения Значения: объекта «QueryDict» не имеет атрибута «метода»
, когда я проверил, я увидел, что объекты запроса содержит только данные представленный в форме, и не включает атрибут «метод»
это функция, которая используется в виде:
def institutionapply(request):
print(request)
print("request: ",request)
a=get_ip(request)
print (a)
country=get_country(request)
# if this is a POST request we need to process the form data
if request.method == 'POST':
# create a form instance and populate it with data from the request:
form = institutionapply(request.POST)
print ("form in post clause:",form)
#print ("duration output:",form.duration)
# check whether it's valid:
if form.is_valid():
print ("print form is valid")
print (form.cleaned_data['title'])
print (form.cleaned_data['country'])
# process the data in form.cleaned_data as required
# ...
# redirect to a new URL:
#return HttpResponseRedirect('/thanks/')
#return redirect(name='home')
# if a GET (or any other method) we'll create a blank form
else:
# create a form instance and populate it with data from the request:
data = {'title': '', 'first': '', 'last':'', 'country':'','internationalprefix':'','phone':'','email':'','institutionname':'','institutionurl':'',}
form = institutionform(data)
return render(request,'app/intitutionapply.html', {'form': form})
какие-либо идеи, почему «метод» объект не является нигде не найти?
EDIT: конфигурация URL:
urlpatterns = [
url(r'^$', views.home, name='home'),
url(r'^InstitutionApply$', views.institutionapply, name='institutionapply'),
url(r'^contact$', views.contact, name='contact'),
url(r'^about', views.about, name='about'),
url(r'^admin/', admin.site.urls),
из шаблона HTML, форма декларации:
функции из views.py
def get_country(request):
a=get_ip(request)
country='United States'
g = GeoIP2(path='D:/newTelumis/newTelumis/GeoLite2-Country.mmdb')
return country
def get_ip(request):
try:
x_forward= request.META.get("HTTP_X_FORWARD_FOR")
if x_forward:
ip=x_forward.split(",")[0]
else:
ip=request.META.get("REMOTE_ADDR")
except:
ip=""
return ip
Что показывают заявления печати? И эта функция называется прямо из URL? –
Выполняет запрос 'get_ip' или' get_country'? – Sayse
@ DanielRoseman печать показывает: запрос: Форма отправляет на тот же URL-адрес (если это то, что вы имели в виду) –
Dror