我的网站搭建(第13天) 用户认证:前言

  • 发布时间:2016年3月9日 15:19
  • 作者:杨仕航
* 该文是基于Python2.7开发的,最新Python3.x和Django2.x视频教程可以前往 >> Django2.0视频教程

这几天事情比较多,加了用户认证功能。代码有点多,整理一下,先发个前言。


写程序是需要一步一步完善的,到目前为止可以考虑添加用户认证功能了,也就是包括登录、登出、注册和检查是否登录等功能。有了这些功能,才能更好的分析数据和推广。

另外,前面开发的评论功能是采用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 %}

上一篇:我的网站搭建(第14天) 登入和登出

下一篇:C#类、窗体和程序实现单例模式

评论列表

智慧如你,不想发表一下意见吗?

新的评论

清空