Django实现文件上传、文件列表查看、修改、限流和日志记录6
Django实现文件上传、文件列表查看、修改、限流和日志记录6
对于已经上传的文件,现在已经实现了文件的查看修改,美中不足的是:需要查看每个文件需要提前记住文件名指定文件名进行查看和修改。为此,新增一个上传文件的列表功能,在通过模版按钮跳转路由到查看和修改页面。
实现逻辑
查看已上传的文件列表,并点击上传文件列表跳转到文件查看和修改页面的功能实现步骤:
- 在你的视图函数中,添加一个新的视图函数来处理文件列表展示的逻辑。可以命名为 file_list。
- 在该视图函数中,连接到远程服务器并获取已上传的文件列表。
- 将获取到的文件列表传递给模板进行展示。
- 创建一个新的模板文件 file_list.html,用于展示文件列表。
- 在模板文件中使用适当的 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内容】。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)