我开发了一个数据科学网络应用程序,可生成各种统计分析相关图表。从Django应用程序执行的统计函数称为" ProtocolApp",其中我有一个目录为" Statistical_protocols"虽然" Stat_Learning" project是基目录。我的程序正在生成一些图像文件和.csv输出文件,其中包含项目的基本目录" Stat_Learning",同一目录,其中" manage.py"存在"。
在模板中,我提供了所有文件的链接:
模板:
{% extends 'protocol/base.html' %}
{% load static %}
{% block content %}
<style type="text/css">
table {
margin-bottom: 20px;
border-collapse: collapse;
border-spacing: 0;
width: 30%;
border: 1px solid #ddd;
bgcolor: #00FF00;
}
th, td {
border: none;
text-align: left;
padding: 8px;
}
tr:nth-child(even){background-color: #f2f2f2}
</style>
<div style="overflow-x:auto;">
<table align="center">
<tr>
<th align="center">Result files</th>
</tr>
{% for a in names %}
<tr>
{% if a %}
<td><a href="/virtual_env_dir/Base_rectory_of_the_project/{{a}}"> {{a}} </a> <br></td>
{% endif %}
</tr>
{% endfor %}
</table>
</div>
{% endblock %}
是否有方法通过此基本目录为所有文件提供可下载链接。
或者是否有任何方法可以添加另一个名为&#34; Downloads&#34;其他人然后媒体目录。因为我使用媒体目录上传协议的输入文件。
感谢
答案 0 :(得分:1)
试试这个:
创建一个这样的视图:
def send_file(request):
import os, tempfile, zipfile, mimetypes
from django.core.servers.basehttp import FileWrapper
from django.conf import settings
filename = settings.BASE_DIR + <file_name>
download_name ="example.csv"
wrapper = FileWrapper(open(filename))
content_type = mimetypes.guess_type(filename)[0]
response = HttpResponse(wrapper,content_type=content_type)
response['Content-Length'] = os.path.getsize(filename)
response['Content-Disposition'] = "attachment; filename=%s"%download_name
return response
为此创建一个url,让anchor标记指向该url。请务必将download
属性添加到您的锚标记
答案 1 :(得分:0)
我不确定这完全回答了你的问题,但我工作的公司运行Django网站(1.10.5),我们倾向于使用django管理面板将文件上传到媒体目录。管理面板还提供了一个页面编辑器,您可以在其中设置页面的URL,然后放入指向媒体文件的链接。 Django定义了一个允许您通过任何根URL访问媒体库的设置:
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = "/media/"
但是如果您定义的进程生成随机命名的文件,您可以定义一个URL来指向某个视图的标准方法。视图的伪代码可能如下所示:
def protocolView(request):
someListOfDirs = ...
context = { names: [] }
for directory in someListOfDirs:
for root, dirs, files in os.walk(directory):
for file in files:
if file is a generated file:
context["names"].append(file)
render(request, "template.html", context)