我有一个包含两种文本输入类型的表单。两种形式的值都传递给 View myfunc
,然后将其传递给另一个模板。表单结果的 url 应该是
/app/1/new_page/?key=key&value=value
但是在提交表单时,它会转到以下 url -
/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 也会给出相同的异常类型和值
但是我已经在 View 中声明了模板。这里可能是什么问题?
包含表单的模板
<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"),
最佳答案
这与表单或 GET 无关。
您已经使用了 render_to_response
快捷方式,它采用两个位置参数:模板和上下文。但是你传递了三个参数,把请求放在第一位;该快捷方式不接受请求。
我认为您打算只使用 render
快捷方式,它确实首先接受请求。
return render(request,'template.html', context)
关于python - 在 Django 中使用方法 ="get"创建表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34322178/