CallMeSurprise

django后台入门--引言

写在前面

最近面试Shanbay的暑期实习生,在正式开始面试之前要有一个小作业,根据布置的任务做出一个背单词网站Demo,供后面面试官筛选和筛选后的面试提问。
然而作为一个刚入门的纯Java后台,Python很久之前学过一点,但很久不用了,Django不会,Bootstrap不会,Web不会(不过应该会写一个helloworld页面吧)。一脸懵逼啊。。。

经过十天左右的“奋战”,好歹做出了一个能跑起来的Demo:功能基本完成,逻辑还算完善,不过界面确实丑了一点。压力之下快速学习过这么一套知识,收获颇丰。
特此记录,一方面帮助自己巩固知识点,记录一些踩过的坑;另一方面,希望有相似需求的人能看到这篇文章,少走弯路。

2016-07-11最新消息,挂掉。
细节部分处理太过粗糙,很多部分我是当做作业来做,实现功能即可。放弃了一些编码规范和必要的函数解耦。
总的来说,还是太嫩。

题目介绍

题目

具体要求:XXX。
要求用Python完成,使用Django框架和bootstrap来辅助做页面。

分析

按照以往经验,把整个业务逻辑先划分模块,理清脉络。针对小模块做开发,最终连贯成完整的业务逻辑。
这里就不再根据题目进行具体的分析,通性基本为用户模块和针对具体应用的应用模块。

具体实现根据需求进行增加或者简化即可。

一些感悟

Django

Django很强大,可以通过简单配置,实现很多强大的功能。比如后台管理系统,之前使用Spring一个人开发两周、还要有个Web端的小伙伴配合,呈现的效果还不如Django几行配置。
当然,开发友好也是一方面,代码简单强大,谁用谁知道。
不过相应的,高度封装带来的好处必然也会有对应的缺点。封装程度过高,需要微调的时候,会有束手束脚的感觉;迁移数据库的时候,万一操作不当,应该是再难以修复(血泪史)。
客观问题确实存在一些,不过发挥主观能动性还是可以解决的。

Django的坑

Django版本之间变化大,操作命令可能会迥异。按照某个教程入门,可能会出现各种因为Django版本不同而命令不同的问题,对新手的积极性挫伤很大。如之前版本中的syncdb命令,在本次的Django1.9.7版本中,已经不适用。现在只提供python managy.py migratepython managy.py makemigrations命令。

因此本文的后续部分,可能也会在某天之后失效。

不过教程的作用不仅限于照本宣科,机械的学习别人给出的每一步。其实某一步出错的时候,可以重试或查阅资料后再解决之,举一反三,触类旁通更重要。必要时推翻重来熟悉一下整体步骤也会收获很大。

参考资料

官方文档自然是最好的选择,不过英文阅读可能会是一些人的障碍。目前中文版的Django book中对应的Django版本距离1.9.7版本差距也较大,不过参照上一小节,很多操作稍作变通即可。从这里学习到很多,活学活用。

另外的其他一些参考资料在本文的最后附录给出,帮助很大,从中学到很多知识。

Bootstrap

至今本人对bootstrap的掌握仅限于很粗糙的能使用,所以这里也没什么好介绍的。只是简单地使用栅格来做布局。

参考文章: