python - 在 Django 中使用方法 ="get"创建表单

标签 python django forms django-templates django-views

我有一个包含两种文本输入类型的表单。两种形式的值都传递给 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/

相关文章:

python - 图像 "Black Ink Level"的横轴直方图

Python 3.4 : How to import a module given the full path?

python - 获取 Django 中选定的多个复选框的值

django - 如何确定我的 Django 应用程序需要什么 AWS RDS 实例?

c# - 一种形式关闭 - 第二次更新 DataGridView

javascript - Meteor 表单未提交

python - 我怎样才能让这个计时器永远运行?

python - 带有 Homebrew 软件 python 2.7.4 的 pyexiv2

python - 没有主键如何进行PUT请求?

php - 序列化/反序列化 php 对象