关于本站
1、基于Django+Bootstrap开发
2、主要发表本人的技术原创博客
3、本站于 2015-12-01 开始建站
这几天事情比较多,加了用户认证功能。代码有点多,整理一下,先发个前言。
写程序是需要一步一步完善的,到目前为止可以考虑添加用户认证功能了,也就是包括登录、登出、注册和检查是否登录等功能。有了这些功能,才能更好的分析数据和推广。
另外,前面开发的评论功能是采用Django的评论库,只是简单的放了邮箱和用户名让用户填写。这样容易造成很多垃圾评论。那么就有必要限制只有登录的用户才能评论。
这部分开发和修改的东西有点多,先列一个流程,稳住阵脚:
判断是否登录 --> 登出 --> 登录 --> 注册 --> 发送邮件激活 --> 修改评论库设计
可能大家有疑问,为什么把“判断是否登录”列为第1个要开发的功能。
这是因为我打算用Django自带的用户认证系统,不想重复造轮子。这样那些cookie、session我就可以不用管了,专心写代码。当然,你也可以自己写一个应用,或者使用第三方的用户认证库,例如 django-registration 等。
如果需要拓展用户信息的话,再创建一个表或者应用即可。
既然使用这个Django自带的用户认证,作为开发者会经常登录后台,所以先判断一下我们是否已经登录了。
第一步定下来之后,后面的步骤自然而然就形成了。
最后,再解决一个问题,这个问题也是系统构架级别的。
每个发送给用户的页面都是需要判断是否登录了,并在一个明显的地方显示出来。
1、响应每个页面的方法都判断并返回状态
笨一点的方法,就是每次响应用户请求的时候,把后台判断的结果一起发送出去。这样的话,就需要修改很多地方。
当然,你可以创建一个新的类继承HttpResponse、和render_to_response等,响应请求的时候再统一用这个类。
看上去很合理,实际上耦合性太高了,而且还要写很多重复的代码。
2、用ajax异步请求数据
这里可以用ajax来处理,在最底层的模版加ajax代码向服务器发送一个检查登录状态的请求,然后再把结果显示到页面中。这样耦合性就很低,而且改动的成本也很低。只需要写一个接口返回数据即可,不用改动原先的代码和减少了很多重复的代码。
前前后后考虑清楚之后,写点Demo测试一下,可以开始开发具体功能了。
另外,我还添加了一个模版页用于显示信息。该页可以倒计时并跳转到指定的页面上,保存文件名为message.html。
{% extends "base.html" %} {% block title %}杨仕航的博客{% endblock %} {% block content %} {#显示消息的页面#} <div class="row"> <center><h4 style="line-height:300%;">{{message|safe}}</h4></center> </div> {% endblock %} {% block extra_footer %} <script type="text/javascript"> {#页面调整控制#} {% if goto_page %} $(function(){ window.setTimeout(function(){ window.location = '{{goto_url}}'; },{{goto_time}}); }); {% endif %} </script> {% endblock %}