django实现将linux目录和文件名列出来

def index(request):
obj=models.USER.objects.all() fileroot = 'd:\machangwei'
fli = os.listdir(fileroot)
print(fli)
dirdic = {}
filedic = {}
for i in fli:
file = os.path.join(fileroot, i)
if os.path.isdir(file):
dirdic[i] = file
print('d:', file)
else:
filedic[i] = file
print('f:', file) return render(request,'index.html',{"obj":obj,'dirdic':dirdic,'filedic':filedic})

视图函数

<h2>根目录下的目录和文件:</h2>
{% for k,v in dirdic.items %}
<a href="" srcmcw="{{ v }}">{{ k }}</a><br>
{% endfor %}
{% for k,v in filedic.items %}
<a href="" srcmcw="{{ v }}">{{ k }}</a><br>
{% endfor %}

前端展示

访问结果

将目录和文件名分层展示出来,这里暂没实现,非目录文件的点击操作

def  listfile(request):
'''
1、要获取前端传来的fp,当前目录绝对路径,跟据这个参数来os list目录,这里暂且用的是全路径
2、
:param request:
:param fname:
:return:
'''
# print(fname) #venv
#print(request.GET) #<QueryDict: {'fp': ['d:\\machangwei\\whl']}>
fp=request.GET.get('fp',['m']) #d:\machangwei\venv 当前目录绝对路径
fn=request.GET.get('fn','') #当前目录名字,f子文件名字,这里貌似没用到
# zfp=os.path.join(fp,fn) #当前目录下子文件绝对路径,我们传给后端的是allf,所以这个是错误的,新页面中的fp需要
# 当前目录名字fp拼接当前目录下单个文件的名字
print(request.GET)
print('fp:',fp) #fp: d:\machangwei\venv
print('fn:',fn) #fn: venv
if os.path.isdir(fp):
allf=os.listdir(fp) #['Include', 'Lib', 'pip-selfcheck.json', 'pyvenv.cfg', 'Scripts'] #列出当前目录下所有文件
print(allf) return render(request,'listfile.html',{'allf':allf,'fn':fn,'fp':fp})

视图函数

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>{{ fp }}\{{ f }}目录下的目录和文件:</h2>
<p><a href="/index/">返回首页</a></p>
{% for f in allf %}
<a href="/listfile/?fp={{ fp }}\{{ f }}&fn={{ f }}" name="{{ fp }}/{{ f }}">{{ f }}</a><br>
{% endfor %} </body>
</html>

前端程序

效果展示:

上面的不安全,这样随便拼接路径,我就能看到所有系统里的文件了。而不单只是我的froot,d:\machangwei下的文件。应该做个校验,re匹配,不是这个目录的返回没有权限

添加权限认证。最后把froot不展示在地址栏,这里只是研究,就不改了

查看根目录下的文件,还是可以的

添加文件下载功能,如果是目录,就列出目录下文件,如果不是目录,就下载下来

    else:
file = open('%s'%fp, 'rb')
response = HttpResponse(file)
response['Content-Type'] = 'application/octet-stream' # 设置头信息,告诉浏览器这是个文件
response['Content-Disposition'] = 'attachment;filename="%s"'%fn
return response

程序

文件下载参考:https://www.jb51.net/article/135951.htm

python小功能的更多相关文章

  1. python小功能记录

    本博客会不断完善,记录python小功能. 1. 合并两个字典 # in Python 3.5+ >>> x = {'a': 1, 'b': 2} >>> y = ...

  2. python 小功能

    目录 1.上传文件 2.验证码 一.上传文件 首先了解一下 request.FILES : 字典 request.FILES 中的每一个条目都是一个UploadFile对象.UploadFile对象有 ...

  3. 五、python小功能记录——打包程序

    使用pyinstaller打包Python程序 安装工具 :pip3 install pyinstaller 在Python程序文件夹上(不点进去)按住shift并且右键,在弹出的选项中点击" ...

  4. 三、python小功能记录——杀掉进程

    import os os.system("taskkill /F /IM python.exe")#旧版 os.system("taskkill /F /IM py.ex ...

  5. Python小功能汇总

    1.没有文件夹就新建 适用以下3种情况. (1)文件夹适用 (2)相对路径适用 (3)绝对路径适用 # 判断输出文件夹是否存在.不存在就创建 # 1.output_dir为绝对路径 if os.pat ...

  6. 四、python小功能记录——按键转点击事件

    import win32api,win32gui,win32confrom pynput.keyboard import Listener def clickLeftCur(): win32api.m ...

  7. 二、python小功能记录——监听鼠标事件

    1.原文链接 #-*- coding:utf-8 -*- from pynput.mouse import Button, Controller ## ======================== ...

  8. 一、python小功能记录——监听键盘事件

    1.监听键盘按键 from pynput.keyboard import Listener def press(key): print(key.char) with Listener(on_press ...

  9. python实现简单的循环购物车小功能

    python实现简单的循环购物车小功能 # -*- coding: utf-8 -*- __author__ = 'hujianli' shopping = [ ("iphone6s&quo ...

  10. 怎么样通过编写Python小程序来统计测试脚本的关键字

    怎么样通过编写Python小程序来统计测试脚本的关键字 通常自动化测试项目到了一定的程序,编写的测试代码自然就会很多,如果很早已经编写的测试脚本现在某些基础函数.业务函数需要修改,那么势必要找出那些引 ...

随机推荐

  1. OpenHarmony持久化存储UI状态:PersistentStorage

      前两个小节介绍的LocalStorage和AppStorage都是运行时的内存,但是在应用退出再次启动后,依然能保存选定的结果,是应用开发中十分常见的现象,这就需要用到PersistentStor ...

  2. 开源图形驱动在OpenHarmony上的使用和落地

      本文转载自 OpenHarmony TSC 官方微信公众号<峰会回顾第10期 | 开源图形驱动在OpenHarmony上的使用和落地> 演讲嘉宾 | 黄   然 回顾整理 | 廖    ...

  3. Kafka原理剖析之「位点提交」

    一.背景 Kafka的位点提交一直是Consumer端非常重要的一部分,业务上我们经常遇到的消息丢失.消息重复也与其息息相关.位点提交说简单也简单,说复杂也确实复杂,没有人能用一段简短的话将其说清楚, ...

  4. Docker学习路线10:容器安全

    容器安全是实施和管理像Docker这样的容器技术的关键方面.它包括一组实践.工具和技术,旨在保护容器化应用程序及其运行的基础架构.在本节中,我们将讨论一些关键的容器安全考虑因素.最佳实践和建议. 容器 ...

  5. Java操作FileUtils读取数据与写入数据到文件

    前言:用一行代码实现读取文件内容 代码如下: 一.添加FileUtils依赖: 1 <!-- FileUtils依赖--> 2 <dependency> 3 <group ...

  6. SAST-数据流分析方法-理论

    引言 众所周知,数据流分析是实现污点分析的一种常用技术 数据流分析分为过程内的数据流分析与过程间的数据流分析.前者是对一个方法体内的数据流分析,主要是基于CFG分析,不涉及方法调用:后者是基于不同方法 ...

  7. 民生直销银行终端安全修炼秘籍之HMS Core两大安全能力

    在金融行业数字化转型浪潮下,传统商业银行先后推出手机银行.直销银行等移动金融客户端.作为民生银行"数字金融"的试验田,民生直销银行始终秉承"简单的银行"发展理念 ...

  8. Linux编译静态库、动态库

    一.Linux上编译静态库 # 1.编译成.o文件 gcc -c a.c b.c // 2.编译成静态库 ar -r liba.a a.o b.o // 3.链接成可执行文件 gcc main.c - ...

  9. 通过path在windows下临时修改python和pip路径 以便于配置环境只对当前命令行窗口生效

    配置前 在cmd命令行下输入新env的路径 path=D:\Miniconda2\envs\openmmlab\openmmlab;D:\Miniconda2\envs\openmmlab\openm ...

  10. 【开发者说】XstoryMaker快速书写剧本场景动画

    原文:https://mp.weixin.qq.com/s/63V0dfD2IufbX92JeD-G_A,点击链接查看更多技术内容. [开发者说]栏目是为HarmonyOS开发者提供的展示和分享平台, ...