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社区运营报告(2023年7月)

     本月快讯 • 2023年7月28日-29日,全球软件质量&效能大会(简称"QECon")圆满举行,OpenAtom OpenHarmony(简称"OpenHar ...

  2. DevEco Studio新特性分享-跨语言调试,让调试更便捷高效

     原文:https://mp.weixin.qq.com/s/JKVLQXu1z1zAoF5q49YEGg,点击链接查看更多技术内容.   HUAWEI DevEco Studio是开发Harmony ...

  3. 整理ionic 系列——页面生命周期

    前言 这是整理ionic的开篇,ionic 就不多介绍了,开发混合app的. 正文 Event Desc ionViewDidLoad 当页面加载的时候触发,仅在页面创建的时候触发一次,如果被缓存了, ...

  4. 【2021.6.26 NOI模拟】Problem B. 简单题 another solution

    Problem Description Input 从文件 b.in 中读入数据. 一个正整数 n. Output 输出到文件 b.out 中. 一个整数表示答案. Sample Data Input ...

  5. 力扣287(java&python)-寻找重复数(中等)

    题目: 给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数. 假设 nums 只有 一个重复的整数 ,返回 这个重复的 ...

  6. HarmonyOS NEXT应用开发案例——二级联动

    介绍 本示例主要介绍了List组件实现二级联动(Cascading List)的场景. 该场景多用于短视频中拍摄风格的选择.照片编辑时的场景的选择. 效果图预览 使用说明: 滑动二级列表侧控件,一级列 ...

  7. 如何进行基于Anolis OS的企业级Java应用规模化实践?|龙蜥技术

    ​简介:提供了7×24小时的专属钉钉或者电话支持,响应时间保证到在业务不可用情况下10分钟响应,业务一般的问题在一小时可以获得响应,主要城市可以两小时内得到到达现场的服务. 本文作者郁磊,是Java语 ...

  8. 【产品动态】一文详细解读智能数据构建产品Dataphin的“规划”功能

    ​简介: 数据中台是传统的数据仓库的一种升级, 是数据采集.建设.管理与使用的一整套体系,Dataphin是一个构建数据中台的强大工具, 核心优势是在数据的建设与管理上引入了阿里巴巴多年来数据中台建设 ...

  9. 案例|自建or现成工具?小型创业团队敏捷研发探索

    简介: 实践和踩坑建议. 我是刘永良,是一名全栈开发者也是一名创业者,来自济南--一个目前被称为互联网洼地的地方.2020年4月和三位志同道合的朋友,在济南共同创建了山东旷野网络科技有限公司,主要从事 ...

  10. [FAQ] 设置 npm 镜像源

    查看 npm 源: $ npm config get registry> http://registry.npmjs.org/ 修改 npm 源: $ npm config set regist ...