Django实现文件上传、文件列表查看、修改、限流和日志记录3
Django实现文件上传、文件列表查看、修改、限流和日志记录3
本次优化新增上传文件查看和修改功能
查看上传文件功能
添加查看视图
在Django中添加上传文件的展示功能,可以在视图函数中查询已上传的文件列表,并将其传递给模板进行展示
#添加查看视图 import paramiko from django.shortcuts import render, redirect from django.conf import settings from django.http import HttpResponse def view_file(request, file_name): # 连接远程服务器 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # ssh.connect('remote_server_ip', username='username', password='password') ssh.connect('10.0.0.127', username='root', password='ariswei') try: # 下载文件内容 sftp = ssh.open_sftp() remote_file_path = '/data/' + file_name with sftp.open(remote_file_path, 'r') as remote_file: file_content = remote_file.read() sftp.close() ssh.close() # 渲染文件内容到模板 context = { 'file_name': file_name, 'file_content': file_content.decode('utf-8') } return render(request, 'view_file.html', context) except Exception as e: return HttpResponse('文件查看失败:{}'.format(str(e)))
创建文件展示模板
创建一个名为view_file.html的模板文件,用于展示文件内容:
view_file.html
{% extends 'base.html' %} {% block content %} <h2>查看文件:{{ file_name }}</h2> <pre>{{ file_content }}</pre> <h2>修改文件:{{ file_name }}</h2> <form method="post" action="{% url 'edit_file' file_name %}"> {% csrf_token %} <textarea name="file_content" rows="10" cols="50">{{ file_content }}</textarea> <button type="submit">保存</button> </form> {% endblock %}
添加查看视图
在file_upload/urls.py文件中,添加URL映射来调用文件查看和修改的函数视图:
from django.urls import path from file_upload_app import views urlpatterns = [ path('admin/', admin.site.urls), path('upload/', views.upload_file, name='upload'), path('view/', views.view_file, name='view_file'), path('edit/', views.edit_file, name='edit_file'), ]
添加文件修改功能
在file_upload_app/views.py文件中,添加一个新的函数视图来处理文件修改的功能
添加修改文件视图
#添加修改视图 def edit_file(request, file_name): if request.method == 'POST': file_content = request.POST.get('file_content') # 连接远程服务器 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('remote_server_ip', username='username', password='password') try: # 上传文件内容到远程服务器的/data目录 sftp = ssh.open_sftp() remote_file_path = '/data/' + file_name with sftp.open(remote_file_path, 'w') as remote_file: remote_file.write(file_content.encode('utf-8')) sftp.close() ssh.close() return redirect('view_file', file_name=file_name) # 重定向到文件查看页面 except Exception as e: return HttpResponse('文件修改失败:{}'.format(str(e))) return HttpResponse('无法直接访问该页面')
通过访问http://localhost:8000/view/<file_name>/来查看已上传的文件内容,其中<file_name>是实际的文件名。页面上会显示文件内容,并提供一个表单用于修改文件内容。当你点击保存按钮时,会将修改后的文件内容保存到远程服务器的文件中,并重定向到文件查看页面。
验证查看和修改上传文件
至此,将已上传文件的查看和修改功能已实现