如何将javascript函数的值传递给Django视图?

时间:2014-11-24 08:44:21

标签: javascript python django

在模板中,我有一些像这样的代码:

<div id="form">
        <form name="myForm"  action="Http://localhost:8000/student/student_add_course/" onclick="return addTable();" method="post">
        {% csrf_token %}
        {{ form.non_field_errors }}
                <div id="form-data">
                {{ form.course_id }}{{ form.course_id.errors }}
                <label for="id_course_id">:Course Id number:</label><br>

                {{ form.score }}{{ form.score.errors }}
                <label for="id_score">Course score:</label><br>
               <p><input type="button" value="add" /></p>
                <p><input type="submit" value="submit" /></p>
                </div>
        </form>
    </div>

    <div id="table">
    <table id="TABLE" border = '1'>
    <tr>
        <th>id number</th>
        <th>score</th>
    </tr>
    <tr>
        <td id="id_number"></td>
        <td id="score"></td>
    </tr>

这是&#34;脚本&#34;部分:

<script type="text/javascript">
    var stock = new Array();
    var i = 0;

    function addTable() {

        var id = document.forms["myForm"]["course_id"].value;
        var score = document.forms["myForm"]["score"].value;

        stock[i] = new Array(id, score);

        //Get the table that shows the selected course from html code
        var table = document.getElementById('TABLE');

        //Add id and score to row of the table which is inside the html code.
        if (document.getElementById("id_number").innerHTML=="" || document.getElementById("score").innerHTML=="")
            {document.getElementById("id_number").innerHTML=id;
            document.getElementById("score").innerHTML=score;}

        //Create table row and append it to end of above table
        else{var tr = document.createElement('TR');
            for (j = 0; j < 2; j++) {
                var td = document.createElement('TD')
                td.appendChild(document.createTextNode(stock[i][j]));
                tr.appendChild(td)
                }
            table.appendChild(tr);
            }

        i=i+1;
        return stock;
    }

</script>

我想为选定的学生添加一些新课程,为此,我创建了获得课程编号和课程成绩的表格。首先,当我填写表格时,当我点击&#34时,javascript创建表格;添加&# 34;按钮,我可以添加许多课程,然后我应该提交它在视图部分中执行其他步骤并将所有课程保存在数据库中。 我有些问题,如果有人帮助我,我会感到高兴。

1)如何发送&#34; stock&#34; Django视图中的数组(在javaScript中是全局数组,包括创建表中的所有过程)?

2)按下后的清洁形式&#34;添加&#34;按钮?

我很抱歉我的英语不好。

1 个答案:

答案 0 :(得分:1)

发回数据的技巧是将POST请求发送回服务器。

我将使用JQuery作为示例(因为它更快更容易)

$.ajax({
    // points to the url where your data will be posted
    url:'/postendpoint/$',
    // post for security reason
    type: "POST",
    // data that you will like to return 
    data: {stock : stock},
    // what to do when the call is success 
    success:function(response){},
    // what to do when the call is complete ( you can right your clean from code here)
    complete:function(){},
    // what to do when there is an error
    error:function (xhr, textStatus, thrownError){}
});

然后你必须调整你的应用程序&#39; urls.py以匹配您的postendpoint并将其指向正确的视图

##urls.py
urlpatterns = [
    url(r'^postendpoint/$', views.YourViewsHere),
    ....
] 

最后您在视图中可以访问这样的帖子数据

##views.py
def YourViewsHere(request):
   if request.method == 'GET':
       do_something()
   elif request.method == 'POST':
       ## access you data by playing around with the request.POST object
       request.POST.get('data')

因为你可以请求是一个python对象,你可以看到许多属性和方法。

有关详细信息,请查看

1)Django请求 - 响应https://docs.djangoproject.com/en/1.7/ref/request-response/ 2)Django Ajax exmple:How do I integrate Ajax with Django applications?

请注意,您必须使用我提供给您的代码。我认为这是从那里学习的最佳方式。

我希望你找到这个有用的