django开发时遇到问题的正确求助姿势

django博客教程发布以来,已有超过上万名读者学习了该教程。一些学习者跟随教程顺利地完成了个人博客的搭建,但一直以来也不断地收到读者的评论留言、QQ 留言、邮件等求助信息,他们被开发中的一些问题卡主了,并且不知道该如何解决。随着教程阅读者越来越多,我收到的求助信息也越来越多。一个人的力量始终是有限的,我个人也难以回答所有求助者的问题。为此,我想向大家介绍一些当初我学习 django 时遇到问题如何有效求助的一些经验,一些更容易得到解决方案的求助渠道,以及一些可供查阅的 django 资料等。

求助首选项:django 官方文档

我所遇到过的,以及我收到的很多新人的问题 70% 都能够通过 django 的官方文档找到答案。但是为什么还是有很多人会问这些在官方文档中可以找到答案的问题呢?原因他们对官方文档不熟悉。学习 django 开发,官方文档是最为全面、权威的学习资料。我的建议是在简单地入门了 django 之后,一定要花费一定量的时间开始通读官方文档的内容。也许你害怕内容太多,但我们要做的是通读文档,知道文档的哪一部分讲了一个什么问题,对 django 相关组件的文档说明有一个鸟瞰式的掌握,这样当遇到某个问题时你就能想起这个问题曾在文档的某个部分有过讨论,因此可以快速定位到文档的相关部分,找到问题的解决方案。同理,对于你正在使用的第三方库,文档依然是首选求助对象。

当然,我了解绝大部分人不想阅读官方文档的原因不是被庞大的内容量吓退的,而是被英语吓退的。但是,在目前这样的技术环境下,熟练阅读英文技术文档和书籍是一个合格的开发者必备的技能之一。如果英语对你来说是一个大的挑战,你应该为此制定一个长期的英语学习计划,而不该急功近利地想快速掌握一门开发的技术。如果项目紧急,你可以尝试先求助一些中文翻译文档,例如 django 有 1.8 的中文文档(我不贴地址,希望你阅读本文后已经学到如何寻找资料的技巧)。但是注意,大部分英文文档翻译都是热心的网友贡献的,一是文档更新缓慢,翻译不全,二是翻译人员众多,错误在所难免,因此一定不能长期依赖,提高自身英文水平才是硬道理。

求助搜索引擎

开发过程中不可避免的会遇到很多问题,这时候要善于利用社区和搜索引擎来帮助自己解决问题。千万不要一个人关起门来和问题死磕,有时候卡了你几天不得解的问题,可能经他人一句话提醒就会是使你茅塞顿开。在这里分享一下我遇到问题通常是如何求助的。

首先最重要的一点就是要抛弃百度。从我个人经验来看,django 开发的大部分问题很难在百度搜到答案。与之相比的是 Google,我通常遇到问题会使用 Google 搜索,使用关键字 django + 问题简短的英文描述,90% 以上的问题都可以在 Google 的搜索结果里找到解决方案,几乎不用求助于他人。如果你没有适当的科学上网的方法,也可以使用雅虎搜索或者必应搜索代替。

当然,我知道很多人不是不想使用 Google,而是不知道问题对应的关键字该如何用英语表达。还是那句话,在目前这样的技术环境下,熟练阅读英文技术文档和书籍是一个合格的开发者必备的技能之一。如果英语对你来说是一个大的挑战,你应该为此制定一个长期的英语学习计划。如果情况紧急,你也可以尝试使用一些翻译软件,Google 的搜索一大好处是能够帮你自动纠正语法错误。例如曾今一个朋友问我 django 该如何显示图片,显然这种问题问 Google 比问我更容易得到更快更好的答案,只需要在搜索框输入:how to display pictures in django,你会看到排名靠前的基本都是你所需要的答案。

求助开发者问答社区

不知道 stackoverflow 的开发者不是一个好的开发者,有一句话叫面向 stackoverflow 编程,甚至还有人出版从如何 stackoverflow copy 代码到项目上线的过程,stackoverflow 对开发者的重要性由此可见一般。通常,我们使用第二步提及的搜索引擎搜索到的答案基本来自 stackoverflow。但如果遇到搜索引擎都无法解决的问题,你就可以尝试在 stackoverflow 上提问,只要问题描述的很好(见下文关于如何正确提问),基本上很快就能得到热心的来自世界各地的开发者的解答。

我任然知道很多人不想使用 stackoverflow 的原因,但还是那句话,重要的事情说三遍:在目前这样的技术环境下,熟练阅读英文技术文档和书籍是一个合格的开发者必备的技能之一。如果英语对你来说是一个大的挑战,你应该为此制定一个长期的英语学习计划。

短期来说,可以寻找一些国内的问答社区。例如可以把 segmentfault 看作是国内版的 stackoverflow,尽管其获取解答的时效性可能不及 stackoverflow。还有国内的技术社区 v2ex 的 Python 板块,也是国内较为活跃,大牛云集的地方。但在这些地方,请讨论一些有价值的问题,而不是 stupid question。还有为了解决 django 开发者的问题,我搭建一个论坛 pythonzhcn,我推荐在以上一些地方发表了问题后,可以转载到论坛上来,一些朋友(包括我)看到了的话有时间就可以为你提供解答。

求助有经验的开发者

如果你使用了以上方法任然无法获得问题的解决方案,那说明你这个问题有一定挑战性了。你可以请教一些有经验的人,或者也欢迎把问题发给我,如果我有能力和时间的话,会和你一起探讨这个问题。但请确保正确的提问方式,只有问题越清晰明确,信息越完整,回答者才能尽快地使用他们的经验为你寻找解决方案,否则在来回的沟通过程中会浪费大量的时间(如何正确提问请看下方)。

如何正确提问

正确的提问就是要保证问题的目的性、完整性、清晰性、明确性、和信息量。当然如何区分一个问题是否是好问题难以找到一个合适的标准,我们不妨从反面来定义这个问题,以下一些问题我相信你一看就知道是有问题的,但我任然经常收到此类让我不知所措的问题:

我运行开发服务器,但总是报错,运行不起来,我该怎么办?

我在运行程序后提示 XX 异常,这是怎么回事呀?

我写好了代码,但是看不到你所说的效果是怎么回事?

我该怎么在服务器上创建一个文件并写入内容?

诸如此类,总之以上问题的通病就是信息不完整,或者只有一个问题的笼统描述,或者就只有一个程序的异常报错信息,我相信这种问题即使是相关技术的创始人恐怕也很难回答,更别说我这种只比你多学了一点点东西的老菜鸟了。

推荐阅读这一篇文章:能有效解决问题的提问方法


最后,如果有 Python 和 Django 相关的问题,欢迎和我讨论交流,当然前提是你已经按照这篇文章的指导对问题进行了正确的处理。

我的个人博客:追梦人物的博客

-- EOF --


11 条评论 / 9 人参与
TransparentsWorld

1


Hopetree

django 怎么在不适用ajax的方法的前提下,用传统的传参方式传递参数啊?就是传递类似于?page=1&a=asd这种多参数,不想用ajax,django怎么实现?


HaddyYang

哇塞,你的网站改版很多,赞


Nick Li

学会如何提问真的很重要。。


Oak_Suen_Germany

test


pfx546746447 Oak_Suen_Germany

test


王俊-wangjun

zengzhengrong

感谢博主提醒,之前一直在用百度解决django问题,昨天遇到一个模版标签forloop中中断循环问题,百度一晚上并没有找到比较适合的解决方法,就在刚刚用必应搜索问题,终于找到解决办法。。没用谷歌是因为学校的网没办法翻墙


King-Ye zengzhengrong

什么学校,网络居然不能翻墙。


zengzhengrong King-Ye

一个广东二本渣校,上网必须要用电脑天翼客户端,不能使用wifi开热点或者路由,而且只有一个宿舍只有一个网口,多人上网需要交换机,尝试过ss代理,不过无效


King-Ye zengzhengrong

SS代理无效的原因可能是SS售卖商的问题。如果你不会自己建,那就找个靠谱的售卖商比较好。