尝试JQuery POST到django视图时403(禁止)

时间:2014-07-28 16:25:29

标签: jquery django django-views http-method

我在JQuery POST上有以下尝试;

$(document).ready(function(){
            $("#id_go").click(function(){
                GOclick();
            });
        });

        function GOclick(){

            selected_table = $("#id_TableName option:selected").text();
            selected_column = $("#id_ColumnName option:selected").text();
            selected_SDT = $("#id_StartDateTime option:selected").text();
            selected_EDT = $("#id_EndDateTime option:selected").text();

            $.post('/historicaldata/input_parameters/', { selected_table: selected_table, selected_column: selected_column, selected_SDT: selected_SDT, selected_EDT: selected_EDT }, function(data){

            });
        }

和Django View.py

if request.method == 'POST':
    pdb.set_trace()

    selectedTable = request.GET.get('selected_table')
    selectedColumn = request.GET.get('selected_column')
    startDT = request.GET.get('selected_SDT')
    endDT = request.GET.get('selected_EDT')

我有一个成功的GET等价物来自同一个脚本并转到相同的视图所以我不确定为什么会这样。我的表格中有一个crsf_token。

2 个答案:

答案 0 :(得分:1)

乍一看,你试图从错误的QueryDict中获取参数,它应该是:

request.POST.get(...)

答案 1 :(得分:1)

使用在django服务器上发布的表单时,您需要确保在“表单”中或您提交的“表单数据”中包含csrf_token。

显示表单csrf标记

{{csrf_token}}

这将创建类似

的内容
<input type="hidden" name="csrfmiddlewaretoken" value="$csrf_token"/>

将您的AJAX调用与您拥有的其他数据一起传递,使用jquery根据表单名称和输入“名称”的名称获取值。

希望这会有所帮助。