如何在Django中将参数从一个模板发送到另一个模板/视图?

时间:2018-07-16 01:57:45

标签: django django-templates django-views

好的,所以我在views.py中有这些功能

modal

那个main.html看起来像这样

Dialog

urls.py

def main(request):
    if request.method == 'POST':
        return newFunction(request)
    return render(request,'user/main.html')

def newFunction(request):
    num = request.POST["number"]
    let = request.POST["letter"]
    context = {'num':num,'let':let}
    return render(request,'user/test.html',{'c':context})

如您所见,我进入main.html页面,然后出现一个表格,要求我输入数字和字母。我输入这两个输入,然后单击提交,它会将我重定向到另一个html并显示字母和数字。问题在于该网址仍然显示user / index.html,而不是user / test.html

我该怎么做?我想基本上单击提交并将所有值发送到另一个模板,但在此过程中更改url。

2 个答案:

答案 0 :(得分:1)

您可以使用ajax来做到这一点。您可以使用表格,但ajax更适合仅将数据传递给视图。

只需发送带有一些数据的Ajax请求,然后将其发送到目标视图即可。

$.ajax({
    type: 'POST',
    url: "{% url 'test' %}",
    data: {
        "csrfmiddlewaretoken": "{{ csrf_token }}",
        "num": 'number',
        "let": 'letter'
    },
    dataType: 'json',
    success: function(e) {
        // success after receive response
    }
});

您当然可以用form发送。只需在action中添加目标网址即可。

<!-- add your target url in action -->
<form method="post" action="{% url 'test' %}">
    {%csrf_token%}
    <input type="text" name="number">
    <input type="text" name="letter">
    <button type="submit">Save</button>
</form>

答案 1 :(得分:0)

这可以在前端使用action标记中的<form>属性进行处理,该标记的值应该是您希望表单数据POST所用的URL。提交。您的开始<form>标签可以更改为以下内容:

<form method="post" action="/user/test.html">

阅读:https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Sending_and_retrieving_form_data