python - 下载文件页面出现 NoReverseMatch 错误

标签 python django django-views django-urls django-url-reverse

我正在开发 Django Web 应用程序。这里,当提交表单时,Web 应用程序会生成一个 pandas 数据框。该数据帧存储在根目录中。我有另一个用于下载生成的 csv 文件的 View 。但是当我重定向到下载页面时,我收到“无反向匹配”错误。

这是我到目前为止的代码

def randomfilename(stringLength=8):
    lettersAndDigits = string.ascii_letters + string.digits
    return ''.join(random.choice(lettersAndDigits) for i in range(stringLength))

def generate_dataframe(request):
    if request.method == 'POST':
        ...
        df = pd.DataFrame(columns=cols)
        df['title'] = title_lst
        df['link'] = product_links[:1]

        fn = randomfilename()
        df.to_csv('./'+fn+'.csv')
        return redirect("download_file", filename = fn)

def download_file(request, filename):
    if request.method == 'POST':

        file_path = './'+filename

        file = open(file_path, 'r')
        mime_type, _ = mimetypes.guess_type(file_path)
        response = HttpResponse(file, content_type=mime_type)
        response['Content-Disposition'] = "attachment; filename=%s" % filename

        return response

项目url.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('scraper.urls')),
]

抓取网址.py

urlpatterns = [
    path('generate', views.generate_dataframe, name='generate_dataframe'),
    path('download/<filename>/', views.download_file, name='download_file'),
]

我知道我在某个地方弄乱了 URL。但我不知道如何解决这个问题。请帮我。提前致谢。

最佳答案

试试这个:

在你看来

from django.urls import reverse

def generate_dataframe(request):
    ...
return redirect(reverse('download_file', kwargs={'filename': fn}))

在你的 urls.py 中:

urlpatterns = [
    ...
    path('download/<str:filename>/', views.download_file, name='download_file'),
]

在您的模板中:

{% url 'download_file' filename %}

关于python - 下载文件页面出现 NoReverseMatch 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62448055/

相关文章:

python - 如何使用字典在 python 中模拟 switch-case

python - 寻找最大公约数(作业打错了,我迫切需要你的帮助)

python - 覆盖Python setuptool的默认include_dirs和library_dirs?

python - 如何验证客户年龄是否 >= 18 以及验证字段的正确方法是什么

python - 分组并填充缺失的日期时间值

django - include() 和 flatpages 混淆

Django 1.6,干草堆 : How to print the search's time?

python - Django 列表序列化器批量更新失败, 'QuerySet' 对象没有属性 'pk'

django - 基于 Django 类的 View 的反向 url

python - Django - 获取创建的最后一个对象,同时过滤器