【发布时间】:2021-03-06 11:03:09
【问题描述】:
我有一个使用线程的视图,例如
from .utils import my_heavy_function
def my_view(request):
if request.method == "POST":
form = my_model_form()
if form.is_valid():
#create thread
thr = threading.Thread(target=my_heavy_function,args=(form,))
thr.start()
messages.success(request, "Processing ...")
return redirect("my_template")
else:
form = my_model_form()
return render(request, "my_app/my_template.html")
它就像一个魅力;它在后台处理my_heavy_function,同时使用户能够继续使用该网页。我只需要在my_heavy_function 完成后显示一条消息。
有没有办法让 Django 显示一条消息,即使没有调用新请求而是基于其他条件?例如,当文件加载完成时在页面上等。
(我故意不使用 Django-Q、Celery 或后台任务来处理这个线程,因为我觉得这太过分了)
【问题讨论】:
-
你不能直接在 django 中这样做。为什么? Django 是一个网络框架,它接受来自网络的请求并给出响应以连接到浏览器。