私はモデルを使用せずにアップロード方法からの入力ファイルを受け取り、このようなサーバーDjangoを使って結果ファイルを提供するには?
の背後にあるいくつかのコードを実行するアプリケーションを開発している:
/MyDjango_project_directory/media/input.csv
そして、このような場所では、いくつかの結果ファイルを生成します。
/Virtualenv_directory/MyDjango_project_directory/OutPut_files_directory/result.csv
/Virtualenv_directory/MyDjango_project_directory/OutPut_files_directory/result.png
は現在、私はちょうど結果ページをレンダリングする前に、「views.py」で「SYS」コマンドでフォルダとダウンロードリンクを介して1が正常にファイルをダウンロードすることができ、「メディア」に出力ファイルを移動しています。これは私のために働いているが、私が探している最良の解決策ではない一時的な解決策です。私の "output_directory"をダウンロード用に追加できるように、どんなボディにもバッターアイディアがありますか?
更新
マイビュー:
from django.shortcuts import render
from django.core.files.storage import FileSystemStorage
from django.shortcuts import render, redirect
from django.conf import settings
from django.core.files.storage import FileSystemStorage
import os
import glob
from django.core.files.storage import FileSystemStorage
def Home_page(request):
return render(request, 'protocol/home.html', {})
#def Main_protocol(request):
# return render(request, 'protocol/main_protocol.html', {}
def simple_upload(request):
result_files_list = []
if request.method == 'POST' and request.FILES['myfile']:
myfile = request.FILES['myfile']
fs = FileSystemStorage()
filename = fs.save(myfile.name, myfile)
uploaded_file_url = fs.url(filename)
os.system("python /home/user/Desktop/pep_learn_project/new_pep_src/protocol/PEP_learn_1.0_selected/Sample_protocol.py > pro.log")
os.system("rm /home/user/Desktop/pep_learn_project/new_pep_src/media/*.csv")
base_link = "/home/user/Desktop/pep_learn_project/new_pep_src/"
names = []
files_to_download = glob.glob("/path_to_files/*.*")
for i, f in enumerate(files_to_download):
if f.split(".")[1] in ["csv", "jpg"]:
names.append(files_to_download[i].split("/")[6])
return render(request, 'protocol/successful.html', {
'names': names, 'base_link':base_link
})
return render(request, 'protocol/main_protocol.html')
のURL:
from django.conf.urls import url
from django.contrib import admin
from . import views
urlpatterns = [
url(r'^$', views.Home_page, name='Home_page'),
url(r'^protocol/$', views.simple_upload, name='simple_upload'),
]
テンプレート:
{% 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="/media/{{a}}"> {{a}} </a> <br></td>
{% endif %}
</tr>
{% endfor %}
</table>
</div>
{% endblock %}
あなたがここにあなたの意見コードを共有してくださいことはできますか? – viveksyngh
@viveksyngh更新ありがとう – jax