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. 深入探讨Java面试中内存泄漏:如何识别、预防和解决

    引言 在编写和维护Java应用程序时,内存泄漏是一个重要的问题,可能导致性能下降和不稳定性.本文将介绍内存泄漏的概念,为什么它在Java应用程序中如此重要,并明确本文的目标,即识别.预防和解决内存泄漏 ...

  2. 黄吉:如何适配OpenHarmony自有音频框架ADM?

    编者按:在 OpenHarmony 生态发展过程中,涌现了大批优秀的代码贡献者,本专题旨在表彰贡献.分享经验,文中内容来自嘉宾访谈,不代表 OpenHarmony 工作委员会观点. 黄吉 中国科学院软 ...

  3. C#针对 private Dictionary<String, String> list说明

  4. Python阿里云消息推送调用API

    很多公司测试APP推送时候,应该也是很头疼:推送环境:测试.正式,稍不注意就把测试的push到正式上,导致所有用户都收到 例子很多: 其实阿里.极光都有推送Api,直接调用API就ok,特别是有的公司 ...

  5. git合并某分支上的单次提交(cherry-pick)

    1. 查找提交对应的hash值 git log 查看 d 查看下一页,q退出 vscode通过gitlens插件查看 2.合并提交 git cherry-pick hahs值

  6. 力扣585(MySQL)-2016年的投资(中等)

    题目: 写一个查询语句,将 2016 年 (TIV_2016) 所有成功投资的金额加起来,保留 2 位小数. 对于一个投保人,他在 2016 年成功投资的条件是: 他在 2015 年的投保额 (TIV ...

  7. 力扣2(java&python)-两数相加(中等)

    题目: 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. 请你将两个数相加,并以相同形式返回一个表示和的链表. 你可以假设除了数 ...

  8. EasyNLP玩转文本摘要(新闻标题)生成

    简介: 本⽂将提供关于PEGASUS的技术解读,以及如何在EasyNLP框架中使⽤与PEGASUS相关的文本摘要(新闻标题)生成模型. 作者:王明.黄俊 导读 文本生成是自然语言处理领域的一个重要研究 ...

  9. Apache Flink在 bilibili 的多元化探索与实践

    简介: bilibili 万亿级传输分发架构的落地,以及 AI 领域如何基于 Flink 打造一套完善的预处理实时 Pipeline. 本文由 bilibili 大数据实时平台负责人郑志升分享,本次分 ...

  10. [FAQ] 钉钉 Excel 回车键不能换行 ? 在线编辑如何换行

      Win 端表格换行:AIT+ENTER Mac 端表格换行:AIT OPTION+ENTER Tool:ChatAI Refer:钉钉技巧 Refer:https://www.dingtalk.c ...