我做了一个简单的文件上传的网站, 文件上传之后会生成一个页面显示已经上传的文件,
现在想做一个删除的功能, 在每个文件名后面加上一个 button, 点击可以删除这个文件。
我的想法就是用 request 把文件的 id 传上去, id 包括对应的文件名, 然后后端的 flask 处理这个文件就行了。
html 里面使用了 jinja, 现在的问题我在删除文件的链接里面 delfile print 一个提示, 但是这个提示在点击 button 之后并没有出现也就是说, 这个 delfile 没有走到, 请问是为什么?
这个是文件名 + button 的 html 代码。
<ul> {% for file_name, file_url in files.items() %} <li><a id="{{ file_name }}_url" href="{{ file_url }}">{{ file_name }}</a>   <button id="{{ file_name }}_btn" class="delbtn">删除</button></li> {% endfor %} </ul>
python:
@app.route('/delfile', methods=['GET', 'POST']) def delfile(): print('in delfile') return 'hello world'
html :
{% extends "layout.html" %} {% block body %} <div> {% if session.logged_in %} <h1><p>{{ session.cur_username }} 已经登录</p></h1> {% endif %} <br /> </div> <div> <h2>已经使用的空间 <b>{{ used_space }}</b></h2> </div> <br /> <div> <form method=post enctype=multipart/form-data> <input type=file name=file> <input type=submit value=上传> </form> </div> <div> <br /><br /> </div> <ul> {% for file_name, file_url in files.items() %} <li><a id="{{ file_name }}_url" href="{{ file_url }}">{{ file_name }}</a>   <button id="{{ file_name }}_btn" class="delbtn">删除</button></li> {% endfor %} </ul> {% endblock %} <script type=text/Javascript> $(function() { $('.delbtn').click(function(){ $.ajax({ url: '/delfile', data:{ filename: this.id }, dataType: 'JSON', type: 'GET', success: function(data){ $("#result"); } }); }); }); </script>
![]() | 1 justinwu 2018-03-14 14:51:34 +08:00 好久没玩 flask 了, 调试下啊,看看后端对不对,自己发个请求测试下,推荐工具 postman。 看发送的请求对不对,把请求抓出来看看,浏览器自带 network 调试,也可以用 fiddler,wireshark 啥的。 业余人士,回复仅供参考。。。 |
![]() | 2 boyxy120 2018-03-14 15:04:43 +08:00 你先判断一下 request.method |
![]() | 3 Linxing 2018-03-14 15:08:50 +08:00 你的 delfile 到底是给 post 用呢还是给 get 用呢 |
4 yangzhezjgs 2018-03-14 15:30:53 +08:00 先定位问题在哪,先找到是服务端的问题,还是 ajax 的问题 如果 print('in delfile')都没执行,先用 requests.get()一个请求,来确定路由函数有没有问题。 如果服务端没问题,那就肯定是 ajax 没正确发送 http 请求,再来找问题再哪。。 |
![]() | 5 Beebird 2018-03-14 16:37:06 +08:00 浏览器开调试,在 ajax 的位置打断点看看。 |
![]() | 6 LeeSeoung 2018-03-14 16:42:15 +08:00 首先 F12 看请求发出去没,再下一步定位。。 |
7 TestSmirk 2018-03-14 17:06:33 +08:00 请问一下楼主,{% for file_name, file_url in files.items() %} 这个名词叫啥. |
![]() | 8 woshichuanqilz OP |