gpt4 book ai didi

python - 渲染模板并将数据插入本地存储

转载 作者:行者123 更新时间:2023-11-28 17:46:49 24 4
gpt4 key购买 nike

我有以下 Django 代码,我在其中返回条目查询集:

def search(request):
entries_list = Entry.objects.all()
if request.method == 'GET':
key = request.GET.get('key', False)
entries_list = entries_list.filter(key__icontains=key)

return render(request, 'search.html', {
'entries': entries_list
})

我想做的是在我的模板中打印条目(键值对)并将它们存储在本地存储中。我怎样才能做到这一点?我曾尝试返回 JSON 或对其进行序列化,但没有成功。

也就是说,在我的 javascript(for 循环)代码中,我想插入我的查询集结果,而不是一些数字:

{% extends  'base.html' %}

{% block head %}

<script>
var prefix = "localStorage-";
function myFunction() {
alert("Page is loaded");
for(var i = 0; i < 10; i++) {
var key = i// $("#key").attr('value');
var value = 2*i//$("#value").attr('value');
localStorage.setItem(prefix + key, value); //******* setItem()
//localStorage[prefix+key] = value; also works
}
}

</script>


{% endblock %}

{% block body %} onload="myFunction()" {% endblock %}

{% block content %}

{% for e in entries %}
<h3>
<a href="{% url 'article' e.id %}">{{ e.key }}</a>
</h3>
{{ e.value|safe }}
<hr>
{% endfor %}

{% endblock %}

最佳答案

如果我没理解错的话,你想在 Django 模板中生成 javascript 吗?

...
function myFunction()
{
{% for value in entries %}
localStorage.setItem(localStorage-{{ forloop.counter0 }}, {{ value }});
{% endfor %}
}
....

这会产生类似的东西

....
function myFunction()
{
localStorage.setItem(localStorage-0, 'string_version_of_entry_0');
localStorage.setItem(localStorage-1, 'string_version_of_entry_1');
localStorage.setItem(localStorage-2, 'string_version_of_entry_2');
...
}
....

请注意,每个 Entry 都将被转换为字符串。显然,您不能只将 Django 对象传输到 javascript。可以通过将 def __unicode__(self) 添加到 Entry 来控制它的转换方式。

关于python - 渲染模板并将数据插入本地存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16993821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com