【发布时间】:2019-03-18 17:06:01
【问题描述】:
我正在尝试在 Django 中创建一个标记系统。基本上,我通过 AJAX 将标签列表(表单中的复选框)传递到 Django 视图,该视图将使用 httpresponse 中的相关标签的新选择来更新标签列表。
问题在于,即使在 getlist 之后,Django 似乎也只能自己接收列表的最后一个元素。事实上,如果我打印整个 request.GET,它只会在每个列表中显示一个元素。
javascript/jQuery 代码在这里:
$(document).on('change', '.form-check-input',function () {
var all_tags = $("input:checkbox").map(function() { return this.id; }).get();
var selected_tags = $("input:checkbox:checked").map(function() { return this.id; }).get();
alert(all_tags);
alert(selected_tags);
$.ajax({
url: "{% url 'AJAX_tagFilter' %}",
data: { 'all_tags': all_tags, 'selected_tags': selected_tags },
cache: false,
type: 'GET',
success: function (data) {
alert(selected_tags);
$('#test').html(data);
console.log('success');
}
});
});
我做了几个警报,以便我可以看到每个阶段传递的内容是正确的。我看到了所有我希望看到的标签。
12,13,21,16,17,15,11,7,18
12,13
但是当它进入 Django 视图时:
def getTagFilterSidebar(request):
if 'selected_tags[]' in request.GET:
all_tags = request.GET.getlist("all_tags[]")
selected_tags = request.GET.getlist("selected_tags[]")
debug_text4 = str(request.GET)
我没有看到标签列表。这是输出:
<QueryDict: {'_': ['1539460657253'], 'all_tags[]': ['18'], 'selected_tags[]': ['13']}>
其中的关键部分是它似乎在我的本地服务器上运行良好。但是,我正在使用 Zappa 并将其上传到 AWS。只有在 AWS 上它不能正常工作。所以我对正在发生的事情感到有点困惑。非常感谢您的帮助,谢谢!
【问题讨论】:
-
您可能需要在
.get()之后调用.join()以获得all_tags 和selected_tags。 -
嗯,通过只返回一个字符串来解决问题,对吧?我试试看!
-
你能从开发服务器控制台显示实际被调用的路径吗?它应该附有参数。
-
在浏览器中查看您的 XHR 请求并检查完整路径,它是否包含所有数据?
-
加入效果很好,可能应该首先想到这一点,非常感谢。虽然我仍然很好奇为什么它不起作用。我不确定如何获取路径,您有说明链接或其他内容吗?
标签: ajax django python-3.x aws-lambda python-zappa