2016-08-09 2 views
0

Я создал [казалось бы] прямолинейную форму для клиентов, однако, после того, как пользователь отправил форму, когда я пытаюсь проверить возвращаемый запрос м- Я получаю: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 
+1

Что показывают заявления печати? И эта функция называется прямо из URL? –

+0

Выполняет запрос 'get_ip' или' get_country'? – Sayse

+0

@ DanielRoseman печать показывает: запрос: Форма отправляет на тот же URL-адрес (если это то, что вы имели в виду) – Dror

ответ

3
def institutionapply(request): 
    ... 
    if request.method == 'POST': 
     ... 
     form = institutionapply(request.POST) 

Заменить institutionapply на institutionform.

+1

Хорошо заметили. Проблема в том, что представление было рекурсивно. –

+0

v.s.danilov Вы джентльмен и ученый – Dror