gpt4 book ai didi

Django:表单 GET 有 "field required"错误,而 POST 没有

转载 作者:行者123 更新时间:2023-12-04 06:25:53 26 4
gpt4 key购买 nike

使用表单在 Django 中编码。我遇到了一个问题,如果表单是 GET,那么每个字段总是显示一个错误“这个字段是必需的。”,但如果表单是 POST,则问题不存在。这是一个简单的例子(部分代码),

View .py:

def login(request):        
if request.method == 'GET':
form = RegisterForm (request.GET)
else:
form = RegisterForm ()
return render_to_response('register.html', locals(), context_instance=RequestContext(request))

注册.html:
<form action = "" method = "GET">
<table style = "border: none;">
<tr>
<td class = "login"><strong>email:</strong></td>
<td class = "login">{{ form.email }}</td>
<td><span class = "error">{{ form.errors.email }}</span></td>
</tr>

...
</table>
</form>

如果您将所有“GET”更改为“POST”,则一切正常。否则,'form.errors.email' 将始终抛出“此字段是必需的”。错误。

另一个奇怪的事情......似乎我没有看到任何使用 request.GET 启动的表单对象。 Django Book 2.0 只显示了通过 request.POST 发起的表单对象。有什么我在这里想念的吗?

非常感谢您的任何提示。

编辑:感谢克雷格和伊格纳西奥的提示。但是,我的问题是,无论我用这个表单做什么,无论是 GET 还是 POST,在表单中使用 GET 总是会给我关于“需要字段”的表单错误。这就是我不理解的机制。对此的任何帮助将不胜感激,谢谢。

最佳答案

如果我没记错的话,默认的 HTTP 请求方法总是 GET,除非它被指定为 POST。因此,当您访问该 View (默认使用 GET)时,您已经满足了 if request.method == 'GET':语句,因此它会自动提出将空数据插入字段的验证错误。你永远不会真正到达 else: form = RegisterForm()线
退房 django-debug-toolbar这是一个非常有用的工具栏,它允许您查看请求类型和请求变量。

关于Django:表单 GET 有 "field required"错误,而 POST 没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6047003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com