【问题标题】:I'm calling another page on click button in Django Framework but it is not working我在 Django 框架中的单击按钮上调用另一个页面,但它不起作用
【发布时间】:2020-12-12 16:04:08
【问题描述】:

我已经附上了必要的代码和 javascript 函数以及 Django 代码。 我正在尝试在“RUN”上单击按钮时从 index.html 导航到 result.htm,但下面的代码无法导航到 result.htm。

index.html

<ol>
    <li>
        <form method="POST">
        {% csrf_token %}

        <input class="bg-yellow text-white" id="RUN" href={% url 'result' %}  value="RUN" name="runModel" type="submit" onclick="sendValuesToBack()">
        </form>
   </li>
   
        <input type="image" onclick="openSettingForm()" alt="submit" data-modal-target="#modal" class="img" style="width:80px;height:70px;" src="{% static 'AutoGenerateML/assets/img/Setting.jpg'%}">
</ol>

javascript 中的 sendvaluesback() 函数

function sendValuesToBack()
            {

                let j,
                    i,
                    arry1D = [];

                for(j=0;j!=countName;j++) {
                    var inputs = document.getElementById("formId"+j).elements;

                    var e = document.getElementById("activationFunction"+j);

                    console.log("Activation Function Final:",e.id);

                    var sv = e.options[e.selectedIndex].text;

                    console.log("me option:",sv);

                    if (!arry1D[j]) arry1D[j] = []
                    arry1D[j][0] = "formId" + j;
                    arry1D[j][1] = sv;

                    console.log("---------------Form--------------------");
                    for (i = 0; i < inputs.length; i++) {
                        if (inputs[i].nodeName === "INPUT" && inputs[i].type === "text") {
                            console.log("values of form:", inputs[i].value);
                            arry1D[j][i+2]=inputs[i].value;
                        }
                    }
                }

                console.table(arry1D);
                var tk = $(this).attr("data-token")
                $.ajax({
                    url: "{% url 'form_post' %}",
                    type:"POST",
                    datatype:"json",
                    data:
                        {
                            'modelCompileParameters':JSON.stringify(modelCompileParameters),
                            'count':JSON.stringify(count),
                            'arry1D':JSON.stringify(arry1D),
                            'csrfmiddlewaretoken': tk},
                    cache:false,
                    success: function(resp){
                        alert ("resp: "+resp.arry1D);
                    }
                });
                console.table(arry1D);

            }

结果.html

<!DOCTYPE html>
<html>
<head>

</head>
<body>
    <h1>Hello Result Page</h1>
</body>
</html>

urls.py

 path('result/',views.result,name="result"),

查看.py

def result(request):
    return  render(request,"result.htm")

【问题讨论】:

  • sendValuesToBack() 长什么样子?
  • 我使用 Ajax 发送到 Django 后端的某些值
  • 您的代码中存在错误,对吗?最有可能是附加在按钮上的功能不起作用。因此,为了能够为您提供帮助,看看代码的样子会非常有帮助。这就是为什么我要问它。含糊地描述函数是不行的。
  • 请检查更新后的帖子,我附上了我的 javascript 的 sendvaluesback() 函数。我不认为有任何与此功能相关的问题。我需要写下代码以在 sendvaluesback() 函数中导航页面吗?

标签: html django django-views django-templates


【解决方案1】:

&lt;input type="submit"&gt; 不能有href 属性,这就是它没有做任何事情的原因。因此,如果您尝试提交表单然后被重定向到结果页面,请删除附加到按钮的sendValuesToBack(),只需通过适当的请求提交表单并重定向到处理提交表单的视图中的结果页面.如果您需要任何通过 javascript 计算的额外数据,请将其附加到表单 onsubmit 事件中。

function extraCalculations() {
   //do whatever needed and set it as input values in the form?
}


<form action="{% url 'form_post' %}" method="POST" onsubmit="extraCalculations">
...
<input type="submit">
</form>

视图处理提交的表单:

def form_post_view(request):
    # handle request.POST data and the redirect to result page
    return redirect(reverse('result'))

【讨论】:

    猜你喜欢
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多