起因
因为之前学习Python之前就一直听说python是万能的。而且之前又学过PHP和前端,所以对Python WEB开发就一直有很深的兴趣,刚好这次放寒假,而且学校又要求每日打卡,所以就开始了本次的项目:今日校园打卡系统 其实去年疫情在家的时候,单脚本就写好了,也集成了微信推送和邮箱通知。但是随着用的人数增加,每次都要自己去前往数据库修改信息,很麻烦,所以本次就为了解决这个需求,系统轮廓出来了。
开始
从0开始学习django。看了一个简单的实战和一些文档,开始上手!
这里要感谢米修在线提供的免费django DEMO入门:
https://www.bilibili.com/video/BV1KJ41117HL
虽然项目和用到的功能都很少,但是让我对django有了一个初步的认识,再加上之前写过MVC框架的程序(thinkphp),所以对django这种MTV的设计模式操作起来不是特别的难。
就这样,先完成了一个简单的DEMO,也就是爬虫图片展示,不过,没有部署到服务器。对django有了初步学习之后,便开始了本次的项目。
像摸着石头过河一样,一遍写,一边学。学完再回头去优化之前的问题和冗余(非常不推荐这种方式,写到后面会嫌弃前面这样写的自己)。
遇到的困难
第一个问题就是:django连接mysql数据库。。。作为一名没什么追求的coder,工具还是用熟悉的才顺手,所以 数据存储方面,直接选择了接触了很多次的mysql。但是在连接数据库时就发生了问题。提示版本不兼容。。。
setting.py中 这样填写数据库信息就行了,但是会提示错误。。
解决方案:
在同级的__init__.py文件中添加这样一段代码
x
import pymysql
pymysql.install_as_MySQLdb()
原因好像是mysqldb不支持python3.x版本。所以需要用pymysql代替
第二个问题就是表单的问题了。
因为我刚开始想的是可以给用户自定义选择 微信提醒、QQ消息、邮件提醒等多种方式来进行推送通知。所以获取表单内容时,就会获取到一个用户勾选的通知方式的数组,但是django的views.py直接使用request.POST['info']获取到的数据仅有最后一条,前面的所有数据都会丢失,其实解决方案也很简单:
xxxxxxxxxx
postdata = request.POST.dict()
postdata['info'] = request.POST.getlist("info")
这就是不看教程的缺点。
其他的还有静态文件配置、登录验证、登录校检等等问题。但自己之前写过类似的登录,所以逻辑处理问题不大,仅仅是堆代码量。
静态文件配置
修改网站的 配置文件 添加下面一段代码。
x
location /static {
alias /www/wwwroot/chu/static;
}
部署
在网上搜了很多部署教程,大多都是原生服务器直接部署,通过nginx映射。对我来说有点超纲了。。。而且全部都是linux环境下。我当前只有一台windows的服务器。。
刚好遇到腾讯云搞活动。432买4年2H4G的服务器,四舍五入等于白送啊!
所以果断出手。搞了台服务器,看了下宝塔的介绍,python项目管理器仅适配了centos7.x,所以给服务器装上了centos7.6的操作系统。再将宝塔配置好环境,添加项目,配置虚拟环境,添加映射。启动!
项目在服务器跑起来了!✿✿ヽ(°▽°)ノ✿
总结
通过本次django项目的从新建文件夹到项目跑在服务器上,中间差不多经历了半个月。。但实际的代码量,几天就足以完成了。。主要原因还是因为 懒。
而且中间测试的时候鬼知道我测试了多少次。。
修修改改。。缝缝补补,而且打击最大的是,去年使用微信提醒,微信提醒是可以用的,但是今年因为微信修改了规则,所以导致微信推送直接死掉了。。功能模块我都写好了(mmp!)。QQ消息这边,发现它也改规则了。。。。。
原来是这样的
现在变成了这样。所以现在只有邮件推送。。
本来还想写短信通知呢。。看了下价格,打扰了,告辞!
因为一些特殊原因,本来项目想开源免费发出来的,感觉可能会有风险。。所以放弃了。。而且本来还想做成多个学校大一统平台,也是感觉风险有点大。所以放弃了。
作者:晚空,如若转载,请注明出处:《django程序总结》