Python 下载文件页的NoReverseMatch错误
我正在开发django web应用程序。在这里,web应用程序在提交表单时生成一个数据帧。此数据帧存储在根目录中。我有另一个视图,用于下载生成的csv文件。但是当我重定向到下载页面时,我得到一个无反向匹配错误 这是到目前为止我的代码Python 下载文件页的NoReverseMatch错误,python,django,django-views,django-urls,django-url-reverse,Python,Django,Django Views,Django Urls,Django Url Reverse,我正在开发django web应用程序。在这里,web应用程序在提交表单时生成一个数据帧。此数据帧存储在根目录中。我有另一个视图,用于下载生成的csv文件。但是当我重定向到下载页面时,我得到一个无反向匹配错误 这是到目前为止我的代码 def randomfilename(stringLength=8): lettersAndDigits = string.ascii_letters + string.digits return ''.join(random.choice(lett
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')),
]
scraper.py
urlpatterns = [
path('generate', views.generate_dataframe, name='generate_dataframe'),
path('download/<filename>/', views.download_file, name='download_file'),
]
urlpatterns=[
路径('generate',views.generate_dataframe,name='generate_dataframe'),
路径('download/',views.download_file,name='download_file'),
]
我知道我把URL弄乱了。但我不知道如何纠正这个问题。请帮帮我。提前感谢。试试这个:
在你看来
from django.urls import reverse
def generate_dataframe(request):
...
return redirect(reverse('download_file', kwargs={'filename': fn}))
在您的URL.py中:
urlpatterns = [
...
path('download/<str:filename>/', views.download_file, name='download_file'),
]
对于“下载\u文件”,我仍然会遇到此错误
Reverse,未找到任何参数。尝试了1个模式:[“下载/(?P[^/]+)/$”]
您的URL.py是在基础应用程序中还是在其他应用程序中?项目仅包含项目文件夹和应用程序文件夹。项目中只有一个应用程序。应用程序名为scraper。问题中的URL位于应用程序文件夹中。我还编辑了这个问题以添加项目URL。请查看您的URL.py在URLSpatternsapp\u name='scraper'
之前添加一个变量。然后在您的视图中执行:returnredirect(反向('scraper:download_file',kwargs={'filename':fn}))
我试过了。这没有帮助。我为应用程序URL添加了另一个路径,如路径('download/',views.download\u file,name='download\u file'),
,这样当它是获取请求时,显示网页,当按下按钮时,下载文件。现在,我得到一个不同的错误download\u file()缺少一个必需的位置参数:“filename”
。我现在做的对吗?
{% url 'download_file' filename %}