视图运行时的 Django 消息框



我有一个Django应用程序,它可以在我的views.py内执行一个相当耗时的统计模型运行。

随着计算在view的进行,我想在最终HttpResponse之前通知用户,例如:

Step 1 completed
Step 2 running...

有没有办法在view运行时向前端显示消息?

长时间运行的任务应异步执行。您可以将 dango-celery 用于异步任务,然后从您的视图中启动任务并将用户重定向到可以显示进度的页面。从芹菜任务中,您还可以更新进度值。

class Job(models.Model):
...
progress = models.PositiveSmallIntegerField(default=0)
...

如果你想动态显示进度值,那么你需要一个API或至少一个将被ajax击中的视图。像这样:

def progres_view(request, job_id):
value = 0
try:
job = Job.objects.get(pk=job_id)
except Job.DoesNotExist:
job = None
if job is not None:
value = job.progress
response = {"job": job_id, "progress": value}
return HttpResponse(json.dumps(response), content_type='application/json')

最新更新