Django项目即时显示处理后的数据



我有一个django项目。它在view.py中有一个函数来处理输入中的数据,为其他函数提供输出。然而,函数的处理时间有点长。我想完成处理输出的即时演示。我是怎么做到的?以下processing((函数用于处理目的。输出"user_entries"用于results((中的演示,如下所示。

def processing(request):
import sys
n = []
for topic in Topic.objects.filter(owner=request.user).order_by("date_added"):
entries = topic.entries.all()
m = []
for p in entries:
q = p.text
m.append(q)
n.append(m)
list = []
start(list, n)
request.session['user_entries'] = list
return request.session['user_entries']
def results(request):
data = processing(request)
return render(request, "project/results.html", {"datas": data})

在processing((函数的start((函数中。有一个part-list.append((可以将新输出添加到列表中。但是,新的附加列表似乎无法传输并在project/results.html中显示即时结果?

您正在做的事情可能会简单得多。

def results(request):
return render(
request, 
"project/results.html", 
{
"user_entries": Entry.objects.filter(topic__owner=request.user),
"start_values": "...", # Whatever start is appending...
},
)

由于您有一个从条目到User的外键,因此您也可以使用request.user.topic_set.all()来获取当前用户的主题。

或者,如果你真的需要嵌套这些列表。。。

# ...
"user_entries": (
topic.entries.all() for topic in
Topic.objects.filter(owner=request.user)
),
# ...

根据您向我们展示的内容,您的排序(对于Topic和Entry(可能应该有一个合理的默认设置,例如Topic.Meta.ordering,在这种情况下可能看起来像这样:

class Topic(models.Model):
# ...
class Meta:
ordering = ("date_added",)
# ...

这样,在这种情况和大多数其他情况下,您就不必手动应用.ordering(...)

最新更新