Linux迷+Python粉 - 开发//blog.pythonwood.com/2014-06-28T20:12:00+08:00微信开发python+django两个月的成功经历,django是个好框架!2014-06-28T20:12:00+08:002014-06-28T20:12:00+08:00pythonwoodtag:blog.pythonwood.com,2014-06-28:/2014/06/微信开发python+django两个月的成功经历,django是个好框架!/<h3 id="_1">时间:大三<a class="headerlink" href="#_1" title="Permanent link">&para;</a></h3> <p>上学期没有用微信内置浏览器而纯对话开发,坑了自己好一下。</p> <p>下学期选错bottle框架,以为轻量好,谁知开发中什么都自己来很痛苦。</p> <p>选对了框架django,终于在大三最后的个把月里写出了里程碑式的现在这个微信端,自己都感动到,作为我大三一年web开发的终结吧。</p> <p>亮点1:自带后台管理</p> <p>亮点2:后台权限管理</p> <p>亮点3:微信回复规则设置去代码化,图形界面。</p> <p>亮点4:一平台多网店 …</p><h3 id="_1">时间:大三<a class="headerlink" href="#_1" title="Permanent link">&para;</a></h3> <p>上学期没有用微信内置浏览器而纯对话开发,坑了自己好一下。</p> <p>下学期选错bottle框架,以为轻量好,谁知开发中什么都自己来很痛苦。</p> <p>选对了框架django,终于在大三最后的个把月里写出了里程碑式的现在这个微信端,自己都感动到,作为我大三一年web开发的终结吧。</p> <p>亮点1:自带后台管理</p> <p>亮点2:后台权限管理</p> <p>亮点3:微信回复规则设置去代码化,图形界面。</p> <p>亮点4:一平台多网店</p> <p>亮点5:图片自动缩略成200*300px大小(使用了七牛空间)</p> <p>亮点6:gzip压缩,网络流量为原来33%左右。<span class="caps">SAE</span>中Gzip压缩设置</p> <p>亮点7:保存接受的所以文本消息,记录永存!</p> <p>亮点8:购买者可查看历史订单,购买总额等。</p> <p>亮点9:后台可查看用户下单总额,最近下单时间等等。</p> <p>亮点10:商店信息,商品信息均在后台直接修改。</p> <p>亮点11:平台创始人可强制商店下线。</p> <p>技巧:微信规则不匹配时不能回复吗?不是,规则包含空字符总能匹配任意文本,请看下面的微信规则截图。</p> <h3 id="_2">后台<a class="headerlink" href="#_2" title="Permanent link">&para;</a></h3> <p>选择botlle框架,自己写sql,便学边用,很痛苦的换了20天作出来了微信<a href="http://2.aozhouwine.sinaapp.com/buy.html?openid=abcdefgabcdefgabcdefgabcdefg" title="顾客演示入口地址">第一版</a>。这版其实很简陋,但其给我的经验很重要。演示地址:<a href="http://2.aozhouwine.sinaapp.com/buy.html?openid=abcdefgabcdefgabcdefgabcdefg" title="顾客演示入口地址">点击入口</a>。</p> <p>抛弃bottle,选择django,后来证明我的选择是对的,虽然学习坡度比较大,但是其框架本身带来的效率和效益却是学习框架本身的好几倍。我喜欢它的自带后台管理,和后台权限管理,更喜欢它的<span class="caps">ORM</span>,省去很多sql的事情,比如sql语句编写,sql防注问题,sql迁移方便等等。这次用上了这三大功能,另外还巧用django的模板渲染实现微信回复功能,但这不是django特有。</p> <p>微信已经实现了多店功能。这也是当初我为什么坚定选择django,因为django的一project多app的架构刚好契合这个一平台多店铺的想法。后来我学scrapy框架,发现也是一project多app,方便不少。同时说明一project多app是先进的,是趋势之一。</p> <h3 id="_3">前台<a class="headerlink" href="#_3" title="Permanent link">&para;</a></h3> <p>我比较喜欢后端的开发,前端的我就修改已有好的前端代码,参考了微信公众号“果然美”,“微果大爱”,“华农果满堂”,“微盟”,“乐外卖”等前端设计。技术上使用html5+css3。</p> <p>现在平台上有果色天香和澳洲红酒两个店铺</p> <p><img alt="平台上有果色天香和澳洲红酒两个店铺1.png" height="50%" src="//blog.pythonwood.com/static/img/平台上有果色天香和澳洲红酒两个店铺1.png" title="1" width="30%"> <img alt="平台上有果色天香和澳洲红酒两个店铺2.jpg" height="50%" src="//blog.pythonwood.com/static/img/平台上有果色天香和澳洲红酒两个店铺2.jpg" title="2" width="30%"> <img alt="平台上有果色天香和澳洲红酒两个店铺3.jpg" height="50%" src="//blog.pythonwood.com/static/img/平台上有果色天香和澳洲红酒两个店铺3.jpg" title="3" width="30%"></p> <h3 id="_4">代码统计<a class="headerlink" href="#_4" title="Permanent link">&para;</a></h3> <p>使用linux&nbsp;shell统计 </p> <p>合理版 cat $(find . -name &ldquo;<em>.py&rdquo; -or -name &ldquo;</em>.yaml&rdquo; -or -name &ldquo;*.rst&rdquo; -or -name &ldquo;sell_detail.html&rdquo;) | wc | sed &ldquo;1i static:\nlines | words |&nbsp;bytes&rdquo; </p> <p><img alt="tu" src="//blog.pythonwood.com/static/img/代码统计1.png" title="1"></p> <p>纯净版 cat $(find . -path &ldquo;./guosetianxiang&rdquo; -prune -or -name &ldquo;<em>.py&rdquo; -or -name &ldquo;</em>.yaml&rdquo; -or -name &ldquo;*.rst&rdquo; -or -name &ldquo;sell_detail.html&rdquo;) | wc | sed &ldquo;1i static:\nlines | words |&nbsp;bytes&rdquo; </p> <p><img alt="tu" src="//blog.pythonwood.com/static/img/代码统计2.png" title="2"></p> <p>完全版 cat $(find . -name &ldquo;<em>.py&rdquo; -or -name &ldquo;</em>.yaml&rdquo; -or -name &ldquo;<em>.rst&rdquo; -or -name &ldquo;</em>.html&rdquo;) | wc | sed &ldquo;1i static:\nlines | words |&nbsp;bytes&rdquo; </p> <p><img alt="tu" src="//blog.pythonwood.com/static/img/代码统计3.png" title="3"></p> <h3 id="_5">前端展示:感谢前人成果!<a class="headerlink" href="#_5" title="Permanent link">&para;</a></h3> <p><img alt="tu" height="50%" src="//blog.pythonwood.com/static/img/前端展示1.png" title="1" width="40%"> <img alt="tu" height="50%" src="//blog.pythonwood.com/static/img/前端展示2.png" title="2" width="40%"></p> <h3 id="_6">=============================后台是亮点=============================<a class="headerlink" href="#_6" title="Permanent link">&para;</a></h3> <p>后台首页</p> <p><img alt="tu" height="50%" src="//blog.pythonwood.com/static/img/后台首页.png" title="1" width="90%"></p> <p>微信回复规则,使用模板渲染自定义变量!</p> <p><img alt="tu" height="50%" src="//blog.pythonwood.com/static/img/微信回复规则,使用模板渲染自定义变量.png" title="1" width="90%"></p> <p>功能代码:</p> <p><img alt="tu" height="50%" src="//blog.pythonwood.com/static/img/功能代码.png" title="1" width="90%"></p> <p>微信用户</p> <p><img alt="tu" height="50%" src="//blog.pythonwood.com/static/img/微信用户.png" title="1" width="90%"></p> <p>订单截图</p> <p><img alt="tu" height="50%" src="//blog.pythonwood.com/static/img/订单截图.png" title="1" width="90%"></p> <h3 id="django">看到这里,你是否也认为django是个好框架呢?<a class="headerlink" href="#django" title="Permanent link">&para;</a></h3> <p>在新浪云上运行得还好,不算慢,请那些嫌弃django臃肿庞大,速度慢的人,不要再误导他人,这就好像那些说python慢的人一样,我至今没有实践证明出过慢在哪。</p> <p>django是python作者本身都很喜欢的框架,又是那么多商用网站的框架,经得其考验。</p> <p>如果可以,当然希望你可以作出一个比django更好的框架,可是至少现在还不大可能。python的django和ruby的rails都得经过时间的考验。我相信 django&nbsp;是经得住考验的,正如我相信python一样。</p> <h3 id="_7">附上 增加微店步骤(澳洲红酒为例)<a class="headerlink" href="#_7" title="Permanent link">&para;</a></h3> <p>复制guosetianxiang 改名&nbsp;aozhouwine</p> <p>修改setting.py 安装app&nbsp;&lsquo;aozhouwine&rsquo;</p> <p>访问/syncdb-online完成数据库同步</p> <p>根app的url.py&nbsp;加入两行:</p> <div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">aozhouwine</span> <span class="o">...</span> <span class="n">url</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;^aozhouwine/&#39;</span><span class="p">,</span> <span class="n">include</span><span class="p">(</span><span class="s1">&#39;aozhouwine.urls&#39;</span><span class="p">)),</span> </pre></div> <p>admin管理,weixinshop应用商店表中增加一条,并增加账户给商店所有者A,然后授权。</p> <p>A在自己的应用商店信息表中增加一条记录,(token在此设置)。</p> <p>微信开发者url: /aozhouwine/weixin/&nbsp;token为之前设置的。</p> <p>访问/aozhouwine/sync_shopinfo完成商店同步。</p> <p>A增加消息,回复规则表中的记录。</p> <p>A上架商品。</p> <p>依然涉及少量代码操作,以及有一点繁琐。</p>