2015-12-16 3 views
2

У меня есть форма, содержащая два типа ввода текста. Значение обеих форм передаются на взгляд myfunc, который затем передает его на другой template.the URL результатов формы должны бытьСоздание форм с методом = "get" в django

/app/1/new_page/?key=key&value=value

Но при представлении формы, она переходит к следующему адресу -

/app/1/new_page/?csrfmiddlewaretoken=CpYebRXTmLkHfo6hRQSrfZPdMFjWW9Ri&key=a1&value=41325 

и выдает ошибку -

Exception Type:  TemplateDoesNotExist 
Exception Value: <WSGIRequest: GET '/app/1/new_page/?csrfmiddlewaretoken=CpYebRXTmLkHfo6hRQSrfZPdMFjWW9Rikey=a1&value=41325'> 

Даже вручную ввести правильный URL дает то же самое Exception Type and Value

Но я указал шаблон на вид. Что может быть проблемой здесь?

template containing form

<form action="{% url 'my_func' id %}" method="GET"> 
    {% csrf_token %} 
    <input id="key" type="text" name="key" value=""> 
    <input id="value" type="text" name="value" value=""> 
    <input type="submit" value="Submit" /> 
</form> 

views.py

def myfunc(request, id): 
    key = request.GET.get('key') 
    value = request.GET.get('value') 
    context = {'key': key} 
    return render_to_response(request,'template.html', context) 

urls.py

url(r'^app/(?P<id>\d+)/new-page/$', views.myfunc, name="my_func"), 
+0

'TemplateDoesNotExist', вам не хватает файла' template.html'. –

+0

Нет файла. Потому что другое представление обращается к одному и тому же шаблону. Ошибка: «TemplateDoesNotExist at/app/1/new_page /' В трассировке даже не упоминается файл шаблона. – qwertp

ответ

2

Это не имеет ничего общего с формами или GET.

Вы использовали ярлык render_to_response, который принимает два позиционных аргумента: шаблон и контекст. Но вы прошли три аргумента, сначала поставив запрос; этот ярлык не принимает запрос.

Я думаю, вы хотели просто использовать ярлык render, который делает, прежде чем принимать запрос.

return render(request,'template.html', context) 
+0

Почему часть 'csrfmiddlewaretoken = CpYebRXTmLkHfo6hRQSrfZPdMFjWW9Ri &' добавлена ​​к URL-адресу? Это из-за токена 'csrf'? – qwertp

+1

Да; он находится в форме, поэтому он отправляется вместе с остальными данными. Это вам не нужно для подачи GET, но вы можете полностью опустить тег. –

Смежные вопросы