返回顶部

Django实现文件上传、文件列表查看、修改、限流和日志记录6

Django实现文件上传、文件列表查看、修改、限流和日志记录6

对于已经上传的文件,现在已经实现了文件的查看修改,美中不足的是:需要查看每个文件需要提前记住文件名指定文件名进行查看和修改。为此,新增一个上传文件的列表功能,在通过模版按钮跳转路由到查看和修改页面。

实现逻辑

查看已上传的文件列表,并点击上传文件列表跳转到文件查看和修改页面的功能实现步骤:

  1. 在你的视图函数中,添加一个新的视图函数来处理文件列表展示的逻辑。可以命名为 file_list
  2. 在该视图函数中,连接到远程服务器并获取已上传的文件列表。
  3. 将获取到的文件列表传递给模板进行展示。
  4. 创建一个新的模板文件 file_list.html,用于展示文件列表。
  5. 在模板文件中使用适当的 HTML 和 Django 模板语法来展示文件列表。

添加列表视图file_list

from django.urls import reverse
from django.shortcuts import render, redirect

@login_required
def file_list(request):
    # 秘钥连接
    private_key_path = '/git/Python/file_upload/sleepy_bear.pem'  # 替换为你的私钥文件路径
    private_key = paramiko.RSAKey(filename=private_key_path)
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect('110.40.168.137', username='root', pkey=private_key)


    try:
        #获取远程服务器上的文件列表
        sftp = ssh.open_sftp()
        file_list = sftp.listdir('/data')  # 替换为你的文件存储路径
        sftp.close()
        ssh.close()

        # 确保 file_list_with_links 列表中的每个元素都是一个包含两个值的元组,其中第一个值是文件名,第二个值是查看文件的链接。
        file_list_with_links = []  # 存储带有链接的文件列表
        for file_name in file_list:
            # 生成查看文件的链接
            view_url = reverse('view_file', args=[file_name])
            view_link = '<a href="{}" class="btn btn-primary">查看文件</a>'.format(view_url)
            # 将文件名和查看文件的链接添加到列表中
            file_list_with_links.append((file_name, view_link))
        logging.info('用户 {} 在 {} 查看上传文件列表'.format(request.user.username, datetime.now()))
        return render(request, 'file_list.html', {'file_list': file_list_with_links})

        logging.info('用户 {} 在 {} 查看上传文件列表'.format(request.user.username, datetime.now()))
        # return render(request, 'file_list.html', {'file_list': file_list})
    except Exception as e:
        logging.error('用户 {} 在 {} 查看上传文件列表失败'.format(request.user.username, datetime.now()))
        messages.error(request, '获取文件列表失败:{}'.format(str(e)))

    return redirect('upload')  # 如果获取文件列表失败,重定向到上传页面

 

定义文件列表模板


在文件列表中显示链接按钮的 HTML 格式,你可以在模板中使用 safe 过滤器来告诉 Django 不要转义 HTML 代码【否则显示text内容】。

 
{% for file_name, view_link in file_list %}
    <p>{{ file_name }}</p>
    <p>{{ view_link|safe }}</p>
{% empty %}
    <p>No files uploaded yet.</p>
{% endfor %}

查看文件列表及跳转

 
http://localhost:8000/file_list/
http://localhost:8000/view/admin-config/

 

 

至此,上传文件列表功能已添加,并将之前文件查看和修改视图相关联。

 

 

posted @ 2023-08-13 17:23  九尾cat  阅读(106)  评论(0编辑  收藏  举报