学习当中遇到的困难

第一个困难是对Models表关系的逻辑理解。发现版本差异对外键的约束增强,在代码提示工具下输入了字段别名,数据查找的时候没有使用别名查找,导致找不到数据。有些又互斥导致无法迁移,然后又去看了一遍,这一次主要理解表关系。等到美化后台的时候,为了测试输入框,走了一些弯路,直接照抄别人代码在Admin中导入字段,结果又卡了一段事件。后面ORM查询的时候,发现有些数据总是查不到,于是再回去看了一遍Model的表结构,修改属性以及理解属性的意义,到这个阶段,数据表基本不出问题,自学ORM操作的时候,在虚拟环境使用console操作,在CMD窗口又打开MySQL,再打开MySQL可视化工具,然后打开Pycharm随时查看Model结构。

哔哩哔哩视频中使用的是Django 2.1.10版本,当时最新的是3.2.6,直接用新版本做,但由于新版本对数据库的字段限制加强,在自动补全工具下填充了别名字段,临时解决了报错,但发现后期展示个人站点的标签时无法顺利从数据库读取数据,经过在Django官方文档的Quryset部分查找后得知是设置字段别名,无法按照表名-字段名进行查找。

在为个人站点准备数据集的过程中,发现过滤后数据条数量与预期不一致,甚至出现不同标签查找到相同数据的情况,深知ORM查询部分知识掌握较差,遂前往官方文档,对着英文版和中文版学习常见的查询,过滤,聚合查询,外键查询,每天学六个小时,通过DBeavor修改部分数据,导入官方文档的示例代码,同时在虚拟环境下使用CLI命名创造合适的数据,便于练习数据查找,外键绑定,外键查询等操作,持续一周后,基本能够完成标签,分类的查询,后又在老师的视频中学到ORM语法加载部分原生SQL语句聚合查询月份和日期,便于显示某年某个月的博客数量。

第二个困难则是前端Ajax与后端View的交互,也就是验证码始终难以调用,这也是第二次请教老师遇到的问题,查找问题的时候重点理解数据的流向;

第三个困难则是静态文件的导入和使用,使用模板标签调用资源时总是出错,原因在于静态文件没有配置正确,因此我又去Django官网查看配置信息,自行动手解决,最后解决了一半,为以后的错误埋下伏笔。

第四个困难则是系统日志的开启和配置。配置信息,尤其是处理函数,我看了不下十遍,总是配置错误,显示该配置方案无法调用。最后请教导师,发现还是log的配置信息写错了。纯数字的配置方案我恁是写了一个字符串格式的变量,卡了我好几天。为了解决这个问题看了很多人,很多版本的配置信息,甚至看了51 CTO的视频,当然他那个比较复杂。最后还是导师帮助解决的。

第五个困难则是前几天遇到的评论树显示失败的问题。当然每次出错我总是下意识的开始自行检查符号,变量名称,敲代码过程中,大多数事件都是复制黏贴了。然后又去找了一个资源网站对比代码,发现还是自己代码写错了,少写了一个字符,导致错误。另外一个原因就是正则匹配对我后面一个URL路径进行截胡,由它先行解析,因此一直无法通过指定的URL承担数据交换的中转功能。后来经群友提醒注释了正则表达式的URL匹配规则,数据传递就成功了。

我的收获

  1. 出问题最先想到的是与老师的代码比较,其次是去官网查询相应的配置信息,然后是中文教程,比如CSDN CNBLOG之类的网站,最后才是去Django Forum提问。总体来讲,这些渠道帮我解决了一部分问题。
  2. 第二点在思维上,我反思之前的错误发现,解决log配置,还有Ajax评论树插入数据失败的经验,总是容易因为长期解决不了问题,将目光局限在某一处,导致对全局的把握和洞察力不足,往往忽略最基本的数据传递,语法格式;
  3. 第三点还是思维上的,除了局部性原理以外,还有一点是自主性。比如前期遇到的几个问题我都去Django Forum提问,虽然外国人比较热情,一天后回复,但我发现基本不能解决我的问题,当我单独自学时,比如ORM操作占据了我七天事件,所以学习的时候应该以自学为主,遇到问题尽量自行解决。把期许和矛盾都寄予自身,减少外部矛盾的转移以及对他人不切实际的期待;