首页 > 解决方案 > 在 Django 视图中散列

问题描述

我通过将数据附加到我的元素来通过 ajax 传递数据。数据是敏感的,如果用户更改它,他们可能会更改另一个用户的关联字段(不像密码那样敏感)。

在此页面上,教师可以查看他们的学生。教师可以选择学生已完成课程的复选框。所以我不能只从请求中获取学生(当前用户)。

我想在将这些数据(student_id)插入模板之前对其进行哈希处理,然后在我从 ajax 收到它时在我的视图中取消它。我在 Django 中找不到如何做到这一点。

<form>
    {% csrf_token %}
    # student_id is the sensitive data
    <td class='class_complete' student_id='{{ student.student.id }}' name='completed' value='{{ class.id }}'>{{ item.completed }}</td>
</form>
def post_form_api(request):
    data = {}

    if request.method == "POST":
        class_id = request.POST.get("class_id")
        student_id = request.POST.get("student_id")

        student_class_data_entry = get_object_or_404(StudentClassData, student_id=student_id, class_id=class_id)

        form = StudentClassDataForm(request.POST, instance=student_class_data_entry)
        
        [.. other logic .]

        if form.is_valid():
            form.save()
            data = {'result' : True}

        if request.is_ajax():
            return JsonResponse(data)
        else:
            return HttpResponseBadRequest()
$(".class_complete").click(function(e){
    var csrfToken = $("input[name='csrfmiddlewaretoken']");
    class_id = $(this).attr('value');
    student_id = $(this).attr('student_id');

    var checked = $('#'+e.target.id).is(":checked");

    $.ajax({ url: "/api/post_form/",
        type: "POST",
        dataType: "json",
        data: {'completed':checked, 'student_id':student_id, 'class_id':class_id, 'csrfmiddlewaretoken':csrfToken.val()},
        cache: false
    }).done(function(data) {
        if (data.result === true){
        }
        else {
        }
    });
});

谢谢你。

标签: pythondjango

解决方案


推荐阅读