gpt4 book ai didi

python - 当表单操作设置为 "."时,Django 重定向到不同的 View

转载 作者:行者123 更新时间:2023-11-30 23:33:58 24 4
gpt4 key购买 nike

我在这里迷路了。我对 django 很陌生,也许这是一个新手问题。我有一个非常简单的 ListView ,它显示数据库中的记录和一个创建 View 来添加这些对象:

@login_required
def list_view(request):
objects = Foo.objects.all()
ctx = {'objects': objects}
return render_to_response('main/foos.html', ctx,
context_instance=RequestContext(request))
@login_required
def create_view(request):
if request.method == 'POST':
form = FooForm(request.POST)
if form.is_valid():
form.save()
return redirect('/foos/')
else:
form = FooForm()
ctx = {'form': form}
return render_to_response('main/foo_form.html', ctx,
context_instance=RequestContext(request))

foo_form.html 模板如下所示:

<!DOCTYPE html>
<html>
<head>
<title>Club</title>
</head>
<body>
<form action="." method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Confirm/>
</form>
</body>
</html>

网址设置:

urlpatterns = patterns('',
url(r'^foos/$', 'list_view'),
url(r'^foos/new$', 'create_view'),
)

当我输入 url“localhost:8000/foos/new”时,创建 View 会按预期获取 GET 请求。问题是,提交表单后,我被重定向到列表(使用调试器,我发现请求正在访问 list_view),即使表单操作设置为“。”我究竟做错了什么? create_view View 应该接收 POST 请求。任何帮助表示赞赏!再次,如果这是一个新手问题,我很抱歉

最佳答案

您尚未完成第二个网址中的正则表达式字符串

url(r'^foos/new$', 'create_view')

所以“。”将使用当前 url 来 POST 表单。 Django 获取 url '/foos/new' 并将其与正则表达式进行匹配。它与第一个正则表达式匹配,因为它找到了“foos”的匹配项,因此转到“list_view”。只要正确完成你的正则表达式,它就会起作用。

url(r'^foos/new/$', 'create_view')

关于python - 当表单操作设置为 "."时,Django 重定向到不同的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18500219/

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