让我给你一个开始。
通常的做法是使用 Ajax 异步触发视图函数。基本设置如下所示:
Ajax
get_queryset = function () {
$.ajax('get_queryset/', {
method: 'GET',
async: "True",
dataType: "json",
success: function(response) {
var queryset = response;
item = queryset[0].fields.datafield;
},
})
}
Views.py
# Async Function for Ajax
def get_query(*args, **kwargs):
# Query all Objects from Model
queryset = serializers.serialize('json', Entry.objects.all())
return HttpResponse(queryset)
Urls.py
urlpatterns = [
path('app/get_queryset/', get_query),
]
我希望这就是你所指的。
关于过滤的编辑:
您直接在视图中过滤查询集。以便服务器通过 AJAX 向客户端返回所需的数据。另请注意,适当的查询过滤可以减少对数据库的查询量,从而提高速度(尽管这不应该是小型应用程序的关键影响)。
Django 中内置了一大堆过滤器和异常方法:
https://docs.djangoproject.com/en/3.0/topics/db/queries/
检查making queries。
此外,如果您想用新数据更新您的 html,您可以循环查询数据集并为查询集中的每个项目操作目标 html,如下所示:
{% for item in queryset %}
<p>{{ item.field_name_one }}</p>
[...]
[...]
<p>{{ item.field_name_two }}</p>
{% endfor %}
所以如果数据库查询从数据库中返回 5 个项目,它将创建 5 个<p> 元素。