社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
之前打算利用学过的Django在VCM上实现文件的上传、下载,避免有时候为了发个文件特意开一下QQ、微信。
刚好前两天买了一年的VCM,所以打算今晚来试试。本来应该可以很快搞好的,毕竟之前已经很熟悉Django的使用了;然而,还是花了挺久的时间Debug,内心很烦躁。而这些Bug,主要是来自于网上的一些学术垃圾。学术垃圾,害人不浅!
CVM:Ubuntu 16.04.1 LTS
Python 3.5.2(CVM自带)
Django 2.1.2(安装方法请自行查找,基本上可以成功安装)
开发过程我就不想详细写了,没啥意思,懒得码字;主要是来记录一下遇到的坑:
网上某个教程:https://code.ziqiangxuetang.com/django/django-views-urls.html
这篇教程总的来说还行吧。我们看一下它的第一步:
我第二次使用这条命令的时候,发现会报错(我不记得自己第一次的时候是不是用的这条命令),不管了,反正这条命令我觉得可能会出错。可能是django-admin.py首行的解释器和系统的不一致吧。
最好使用命令:python3 django-admin.py startproject yoursitename
坑之一其实还好,很容易跳过去;这个坑就是真的坑爹了。诅咒一下那些专业生产学术垃圾的垃圾
垃圾教程:https://www.cnblogs.com/liyqiang/articles/7858523.html
百度上一搜“Django 文件上传"就可以发现这篇学术垃圾。看一下它的第一种方法:
看一下它的前端,有一个 action="/upload/",作用是提交后网页重定向,避免重复提交文件;想法是好的,可惜,加上这个之后,文件根本就提交不到CVM上,而且还不会报错!tmd
看一下它的后端,有一个 BASE_DIR ,这个是settings.py中的变量名,它也没有把之前的导入语句写出来,对新手很不友好。
最初,我把 action="/upload/" 去掉了,因为我没有建立 upload 这个url;f=open 那一句的地址我也自己改了一下,成果上传了。
可是后来,我为了实现重定向,竟然鬼使神差地加上了一句 action="/ok/"。然后我就发现,可以成功点击提交按钮,但是在CVM上就是看不到上传的文件,我一度开始怀疑人生,差点想放弃了。改了好多别的地方,一直没有用,真是痛苦死了。最最关键的是,它一直不报错!!!所以我根本就查不出到底哪里有问题!文件的保存地址改了很多次,就是没有用!
后来,我把 action="/ok/" 删掉了,终于Debug成功了。
重定向还是用 HttpResonseRedirect 吧,别去html表单里重定向!文件里要导入相应的包:from django.http import HttpResponseRedirect
这是我的有Bug的代码片段:
<form action="/ok/" method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="zqfile">
<input type="submit">
</form>
这是修改后的代码片段:
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="zqfile">
<input type="submit">
</form>
哎,其实也没啥好写的,就是心里很烦躁。以后还是得多看几篇博客再去动手,不要看到一篇就奉为圭臬,多结合几篇,综合一下,这样比较好,毕竟学术垃圾实在是太多了。
还有一些静态文件配置方法,自行查阅吧,我不想写了。
后期再完善一下网站。
烦躁。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!