【问题标题】:403 (forbidden) when trying JQuery POST to django view尝试 JQuery POST 到 django 视图时出现 403(禁止)
【发布时间】:2014-07-28 16:25:29
【问题描述】:

我在 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。

【问题讨论】:

  • 如果你得到一个 403 很可能你没有传递你的 csrf 令牌。您可以尝试查找 @csrf_exempt 插件来帮助您。它有点冒险,但有可能。执行此操作的其他方法是创建离开以请求 csrf 令牌,然后将其发回。祝你好运。希望这会有所帮助

标签: jquery django django-views http-method


【解决方案1】:

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

request.POST.get(...)

【讨论】:

    【解决方案2】:

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

    显示表单 csrf 令牌

    {{csrf_token}}
    

    这将创建类似的东西

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

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

    希望这会有所帮助。

    【讨论】:

    • 上面的答案也是正确的,我的答案是它的延伸,因为我在你的帖子数据中没有看到对它的引用。
    • 谢谢你,你能告诉我你是怎么通过的吗?作为具有其余值的变量?
    • 我稍微回顾了一下这个主题,因为 Mark 说他在表单中有 csrf 令牌。
    • 它可能存在于表单本身中,但它不在您代表表单提交的 ajax 数据中尝试使用 jquery 获取它,就像这样 $("input[name*='csrfmiddlewaretoken'] ").val();
    猜你喜欢
    • 1970-01-01
    • 2013-09-26
    • 2014-10-16
    • 2018-11-06
    • 2021-02-27
    • 2012-12-25
    • 1970-01-01
    • 2023-03-10
    • 2013-10-20
    相关资源
    最近更新 更多