gpt4 book ai didi

python - Django,从另一个 View 渲染一个 View (调用特定的URL)

转载 作者:太空宇宙 更新时间:2023-11-03 16:24:22 25 4
gpt4 key购买 nike

我有一个小表格:

<form action="#" method="post">
{% csrf_token %}
<label>Company Number:</label>
<input type="text" name="company" placeholder=""/><br>
<input type="submit" id="register value=" OK" />
</form>

映射如下:

url(r'^userfilt/insertForm/$', views.insertForm, name='insertForm'),

现在提交此表单后,我想返回主视图:

url(r'^userfilt/$', views.userfilt, name='userfilt')

URL映射文件:

app_name = 'SSO_Management_POC'
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^user/$', views.user, name='user'),
url(r'^userfilt/$', views.userfilt, name='userfilt'),
url(r'^userfilt/insertForm/$', views.insertForm, name='insertForm'),
#url(r'^updateForm/$', views.updateForm, name='updateForm'),
url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'),
url(r'^(?P<pk>[0-9]+)/results/$', views.ResultsView.as_view(), name='results'),
url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote, name='vote'),
]

主视图是这样的(但我不认为这段代码与问题有关..):

def userfilt(request):
if request.GET.get('create'):
return HttpResponseRedirect('insertForm')

if request.GET.get('update'):
print request.GET.get('pk')
return render(request, 'SSO_Management_POC/updateForm.html')

if request.method == 'POST':
form = UserForm(request.POST)
val = request.POST.get('my_textarea')
return render(request, 'SSO_Management_POC/userfilt.html',
{'top_user': TopUser.objects.filter(user_name__regex=val)})
else:
print '4'
return render(request, 'SSO_Management_POC/userfilt.html')

现在,当 N 提交表单时,就会发生让我丧命的调用,N 只是想返回到主页,用 POST 调用它,就像往常一样!

return render(request, "SSO_Management_POC/userfilt.html")

我是这样做的,但问题是 URL 尚未重置..并导致这样的结果,

<强> http://127.0.0.1:8000/SSO_Management_POC/userfilt/insertForm/#

导致我在该页面上所做的每项操作都不起作用,因为它不再被映射

我的意思是,它应该是:

但事实却是

尝试更好地解释我的问题..

我进入主页 ( http://127.0.0.1:8000/SSO_Management_POC/userfilt/ )

“GET/SSO_Management_POC/userfilt/HTTP/1.1”200 2648

然后我单击“创建用户”来调用表单,它会将我带到:( http://127.0.0.1:8000/SSO_Management_POC/userfilt/insertForm/ )

“GET/SSO_Management_POC/userfilt/insertForm/HTTP/1.1”200 1549

然后我提交了表单,我想返回主页,但出现了我不明白的事情:它把我带到这里

http://127.0.0.1:8000/SSO_Management_POC/userfilt/insertForm/#

但是我想去这里

http://127.0.0.1:8000/SSO_Management_POC/userfilt

这又是代码:

return render(request, "SSO_Management_POC/userfilt.html")

这是调用的电话:

“POST/SSO_Management_POC/userfilt/insertForm/HTTP/1.1”200 2648

我尝试使用渲染、HttpResponseRedirect 等等...但总是发生我用前一个调用的 URL,我希望它被重置,我希望它是 ../!!!

唯一对我有用的是:

return redirect("../")

但是

  1. 这很脏
  2. 这不允许进行 POST 调用!

感谢 Daniel,我这样修复了它:

return redirect('/SSO_Management_POC/userfilt')

但它仍然给我带来同样的问题:

return render(request,'/SSO_Management_POC/userfilt')

让我访问http://127.0.0.1:8000/SSO_Management_POC/userfilt/insertForm/

最佳答案

成功发布后,您应该始终重定向而不是渲染。执行 return redirect(url) 是正确的做法,但不清楚为什么您对此不满意。

请注意重定向 can accept the name of a URL pattern ,因此您可以执行 return redirect('userfilt') 这会将您带到正确的位置。

关于python - Django,从另一个 View 渲染一个 View (调用特定的URL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38124335/

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