Python Django-在模板中显示文件列表,从服务器的媒体文件夹中获取文件

Python Django-在模板中显示文件列表,从服务器的媒体文件夹中获取文件,python,django,Python,Django,我想在Django应用程序的前端以表格的形式显示我服务器上媒体根目录中的文件列表 下面是我试图实现的目标: 下面是我的实际代码。我只显示受问题影响的类、函数和文件。在问题的末尾,如果缺少某些内容,您将找到完整项目的链接 views.py(我有两个函数,因为我尝试了这两种方法) 设置.py models.py url.py 来自django.contrib导入管理 从django.conf导入设置 从django.url导入路径,返回路径 从django.views.static导入服务 从dj

我想在Django应用程序的前端以表格的形式显示我服务器上媒体根目录中的文件列表

下面是我试图实现的目标:

下面是我的实际代码。我只显示受问题影响的类、函数和文件。在问题的末尾,如果缺少某些内容,您将找到完整项目的链接

views.py(我有两个函数,因为我尝试了这两种方法)

设置.py

models.py

url.py

来自django.contrib导入管理
从django.conf导入设置
从django.url导入路径,返回路径
从django.views.static导入服务
从django.conf.url导入url,包括
从django.conf.url.static导入静态
从App.views import UploadView、UploadSuccessView、IndexView中,选择PredFileView、PredictionsSuccessView
URL模式=[
url(r“^admin/”,admin.site.url),
url(r“^App/”,包括('App.url'),name=“App”),
url('index/',IndexView.as_view(),name='index'),
#上载文件并确认上载的URL
url('fileupload/',UploadView.as_view(),name='upload_file'),
url('upload_success/',UploadSuccessView.as_view(),name='upload_success'),
#用于为预测选择文件的URL
url('fileselect/',SelectPredFileView.as_view(),name='file_select'),
url('predict_success/',PredictionsSuccessView.as_view(),name='pred_success'),
]
urlpatterns+=静态(settings.MEDIA\u URL,document\u root=settings.MEDIA\u root)
如果设置为.DEBUG:
导入调试工具条
URL模式=[
路径(“调试”,包括(调试工具栏.url)),
re_路径(r'^media/(?P.*)$,serve,{'document_root':settings.media_root,}),
]+URL模式
选择_file_predictions.html

{% extends "index.html" %}

{% block content %}
    <form method="post" enctype="multipart/form-data">
        {% csrf_token %}
        {{ form.as_p }}
        {% for myfile in myfiles %}
          <input type="checkbox" name={{ myfile }} value="{{ myfile }}"><br>
        {% endfor %}
        <button type="submit" class="btn btn-primary">Upload file</button>
    </form>
{% endblock %}
{%extends“index.html”%}
{%block content%}
{%csrf_令牌%}
{{form.as_p}}
{%用于my_objects%中的文件}

{%endfor%} 上传文件 {%endblock%}
问题:该文件未显示在html模板中

如果您想深入研究,应用程序的完整代码如下:

我检查的问题无法解决此问题:

(一)

(二)


3) 我会这样做:

views.py

from os import listdir
from os.path import isfile, join

import settings
from django.views.generic.base import TemplateView


class MyFilesView(TemplateView):

    template_name = "select_file_predictions.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)        

        # List of files in your MEDIA_ROOT
        media_path = settings.MEDIA_ROOT
        myfiles = [f for f in listdir(media_path) if isfile(join(media_path, f))]
        context['myfiles'] = myfiles

        return context
选择_file_predictions.html

{% extends "index.html" %}

{% block content %}
    <form method="post" enctype="multipart/form-data">
        {% csrf_token %}
        {{ form.as_p }}
        {% for myfile in myfiles %}
          <input type="checkbox" name={{ myfile }} value="{{ myfile }}"><br>
        {% endfor %}
        <button type="submit" class="btn btn-primary">Upload file</button>
    </form>
{% endblock %}
{%extends“index.html”%}
{%block content%}
{%csrf_令牌%}
{{form.as_p}}
{myfiles%中myfile的%s}

{%endfor%} 上传文件 {%endblock%}
我会这样做:

views.py

from os import listdir
from os.path import isfile, join

import settings
from django.views.generic.base import TemplateView


class MyFilesView(TemplateView):

    template_name = "select_file_predictions.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)        

        # List of files in your MEDIA_ROOT
        media_path = settings.MEDIA_ROOT
        myfiles = [f for f in listdir(media_path) if isfile(join(media_path, f))]
        context['myfiles'] = myfiles

        return context
选择_file_predictions.html

{% extends "index.html" %}

{% block content %}
    <form method="post" enctype="multipart/form-data">
        {% csrf_token %}
        {{ form.as_p }}
        {% for myfile in myfiles %}
          <input type="checkbox" name={{ myfile }} value="{{ myfile }}"><br>
        {% endfor %}
        <button type="submit" class="btn btn-primary">Upload file</button>
    </form>
{% endblock %}
{%extends“index.html”%}
{%block content%}
{%csrf_令牌%}
{{form.as_p}}
{myfiles%中myfile的%s}

{%endfor%} 上传文件 {%endblock%}
您是否有特殊问题?抱歉,刚刚编辑了问题并添加了一个屏幕:文件列表未显示在HTML中。您是否有特殊问题?抱歉,刚刚编辑了问题并添加了一个屏幕:文件列表未显示在HTML中。谢谢您,成功了!我只在模板中做了一个小改动,以显示文件名{{myfile}}
欢迎您,Marco!(费利斯·迪埃塞蒂·斯塔托·乌蒂莱:-)谢谢你,洛伦佐,成功了!我只在模板中做了一个小改动,以显示文件名{{myfile}}
欢迎您,Marco!(费利斯·迪埃塞蒂·斯塔托·乌蒂莱:-)
from os import listdir
from os.path import isfile, join

import settings
from django.views.generic.base import TemplateView


class MyFilesView(TemplateView):

    template_name = "select_file_predictions.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)        

        # List of files in your MEDIA_ROOT
        media_path = settings.MEDIA_ROOT
        myfiles = [f for f in listdir(media_path) if isfile(join(media_path, f))]
        context['myfiles'] = myfiles

        return context
{% extends "index.html" %}

{% block content %}
    <form method="post" enctype="multipart/form-data">
        {% csrf_token %}
        {{ form.as_p }}
        {% for myfile in myfiles %}
          <input type="checkbox" name={{ myfile }} value="{{ myfile }}"><br>
        {% endfor %}
        <button type="submit" class="btn btn-primary">Upload file</button>
    </form>
{% endblock %}