Python Django,从另一个视图呈现视图(调用特定URL)

Python Django,从另一个视图呈现视图(调用特定URL),python,django,forms,redirect,post,Python,Django,Forms,Redirect,Post,简单的问题,我是Django和Pyton noob 我想做一件非常简单的事情,至少我这么认为: 我有一个小表格: <form action="#" method="post"> {% csrf_token %} <label>Company Number:</label> <input type="text" name="company" placeholder=""/><br> <input ty

简单的问题,我是Django和Pyton noob

我想做一件非常简单的事情,至少我这么认为:

我有一个小表格:

<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/$', 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'),
]
现在,当我提交表单的时候,我就要打电话给我,我只想回到主页,用一篇帖子来打电话,就像一个老家伙一样

return render(request, "SSO_Management_POC/userfilt.html")
我是这样做的,但问题是url没有被重置。。这样的结果,

结果是,我在该页面上所做的每个操作都不起作用,因为它不再被映射

我的意思是,应该是:

而是

为了更好地解释我的问题

我进入主页()

“GET/SSO\u Management\u POC/userfilt/HTTP/1.1”200 2648

然后我单击create用户调用表单,它会将我带到:()

“GET/SSO\u Management\u POC/userfilt/insertForm/HTTP/1.1”200 1549

然后我提交了表格,我想回到主页,我不明白的是: 它把我带到了这里

但是我想去这里

这也是代码:

return render(request, "SSO_Management_POC/userfilt.html")
这是电话:

“POST/SSO\u管理\u POC/userfilt/insertForm/HTTP/1.1”200 2648

我尝试了render,HttpResponseRedirect等等。。。但它总是发生在我用上一个调用的url上,我希望它被重置,我希望它是

唯一适合我的是:

return redirect("../")
但是

  • 这是脏的
  • 这不允许打电话 更新 多亏了Daniel,我也这样修复了它:

    url(r'^userfilt/insertForm/$', views.insertForm, name='insertForm'),
    
    return redirect('/SSO_Management_POC/userfilt')
    
    但它仍然给我同样的问题:

    return render(request,'/SSO_Management_POC/userfilt')
    
    带我去


    谢谢大家

    以下代码是否解决了您的问题

    在模板中:

    <form action="{% url 'userfilt' %}" method="post">
    

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


    请注意,
    重定向
    ,因此您可以执行
    返回重定向('userfilt')
    ,这将带您到正确的位置。

    我不确定是否理解您的问题。。。如果希望表单从URL A重定向到URL B,则必须使URL B成为表单的目标(
    action=“…”
    )(在这种情况下,视图B必须处理表单),或者使用post to A并重定向到B,但不能将URL B与post请求一起加载。您更喜欢哪个选项?如果我使用它总是带给我的操作,而不是/SSO\u Management\u POC/userfilt.html,它总是将我的文本附加到我所在的最后一页,即表单一!否:(如果我这样做,它总是将我带到/SSO_Management_POC/userfilt.htmlAnd,而不是/SSO_Management_POC/userfilt.htmlAnd,我想调用表单方法“def insertForm(request)”通过url映射,它是有效的,只是我在这一次结束时所做的重定向不起作用,因为它会将请求的url附加到上一次的url中…不,它不会!如果我这样做:重定向('userfilt'),它会给我以下错误:与参数“()”和关键字参数“{}”相反的“userfilt”。0模式尝试:[]如果我尝试(像往常一样)这样:返回重定向('SSO_Management\u POC/userfilt.html')(如此清晰,如此简单,应该是…)但它把我带到了这里:第二种情况是我不理解的,如果我返回重定向('SSO_Management\u POC/userfilt.html'))为什么它会把我带到???将该url附加到上一个url…因为您还没有使用前导斜杠从根开始:
    redirect(“/…”)
    第一个错误大概是因为
    userfilt
    模式包含在名称空间中,您没有提供足够的信息来知道确切的内容。我添加了所有url映射py文件,乍一看,我不是专家,他们似乎是对的……好吧,丹尼尔,我怎么不知道您在哪里,但如果您想要,我可以买下您一张到这里来的票,在我空空的头上给我几拳……我想这都是关于领先的斜杠……:(:(
    <form action="{% url 'userfilt' %}" method="post">