重定向自定义Django命令的输出到浏览器

2024-09-27 00:15:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个自定义命令,它接受一个位置参数和一个命名的可选参数。它执行许多检查,下载一个文件,解压缩它,并用解压缩的数据填充数据库。在

为了方便用户使用,我创建了一个简单的表单并创建了一个视图:

from django.views.generic.edit import FormView
from django.core import management

from .forms import DownloadForm

class DownloadFormView(FormView):
template_name = 'frontend/download.html'
form_class = DownloadForm
success_url = '.'

def form_valid(self, form):
    country = form.cleaned_data['country'][:3]
    levels = int(form.cleaned_data['country'][-1:])
    management.call_command('download_shapefile', country, levels=levels)
    return super(DownloadView, self).form_valid(form)

这很好,现在我想向用户提供反馈,因为命令可能会运行一段时间。在

是否可以将命令输出重定向(或使其可用)到模板并在浏览器中显示?在

在我的命令中,我使用:

^{pr2}$

输出消息而不直接用print方法打印。在


Tags: django用户fromimport命令form参数download
1条回答
网友
1楼 · 发布于 2024-09-27 00:15:19

您可以通过Ajax完成任务,只需锁定屏幕,直到服务器返回响应。但这是一种不好的做法。最好的解决办法是用芹菜(或类似的东西)。这是一个分布式任务队列。您的数据将在执行后写入数据库。在此之前,临时结果将存储在NoSQL中。在这种情况下,这被称为经纪人。之后,你可以使用上面给出的建议。你只需询问服务器答案是否准备好。如果是这样,您可以将其返回并显示给用户。因此,服务器上的负载将显著降低。在

相关问题 更多 >

    热门问题