Django学习Django日记程序员

后台学习——django(2)

2016-07-13  本文已影响1851人  coder_ben

经过对django的初步学习,我们已经对后台的基本流程以及django的运作有了一定的了解,但是这还不足够,django还有许多方法和API需要我们详细滴学习,是时候开始进阶学习了。
上期文章:后台学习——django(1)

零、上篇文章修改

  1. 静态文件引用修改

一、进阶学习——验证码

在一个正常的登录系统中,验证码是非常重要的,用于识别人机,毕竟我们都知道,这个世界中存在着万恶的爬虫,验证码有很多种方式,有图片的,有邮件的,有短信的,有拼图的,不管什么样的验证码,目的都是验证访问用户到底是人还是机器,要对机器say no,接下来我们要实践一个图片性的验证码。

  1. URL拓展
  1. 下一步我们就要开始构造验证码函数了,也就是返回一张验证码图片的函数,怎么建呢?我们又没有验证码图片在?没有就直接画出来呗,python拥有一个库pillow专门用于画图的,安装命令pip install pillow
  1. 然而的然而,你还没完成呢!!只有验证码图片却不能验证有什么用!!
  1. OK,开始验证成果

二、进阶学习——用户管理系统

  1. 先不说那么多,先清空两个文件先(真的是强迫症),分别是:
  1. 再修改server/learning/templates/idnex.html,用于应用相关接口函数:
    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="UTF-8" />
    <title>登录注册系统</title>
    </head>
    <body>
    <div>
    <form action="check/" method="post">
    {% csrf_token %}
    <table>
    <tr>
    <th>帐号:</th>
    <td><input type="text" id="username" name="username" maxlength="20" /></td>
    </tr>
    <tr>
    <th>密码:</th>
    <td><input type="password" id="password" name="password" maxlength="20" /></td>
    </tr>
    <tr>
    <th>验证码</th>
    <td>
    <input type="text" id="verify" name="verify" maxlength="4"/>
    <img src="verify/100/30/" alt="" />
    </td>
    </tr>
    <tr>
    <th></th>
    <td>
    <label><input type="radio" name="way" value="login" checked="checked"/>登录</label>
    <label><input type="radio" name="way" value="register"/>注册</label>
    </td>
    </tr>
    <tr>
    <th></th>
    <td><input type="submit" id="submit" value="提交" onclick="return check()" /></td>
    </tr>
    </table>
    </form>
    </div>
    <script type="text/javascript">
    function check() {
    var username = document.getElementById('username');
    var password = document.getElementById('password');
    var verify = document.getElementById('verify');
    if(username.value == '') {
    alert('帐号不能为空,请重新输入');
    username.select();
    } else if(password.value == '') {
    alert('密码不能为空,请重新输入');
    password.select();
    } else if(verify.value.length != 4){
    alert('验证码输入错误,请重新输入');
    verify.select();
    } else {
    return true;
    }
    return false;
    }
    </script>
    </body>
    </html>
  1. 修改server/learning/views.py文件中的check函数,并添加两个空函数:
    # check函数的作用已经在之前涉及过了,这里就不讲了
    def check(request):
    if request.POST['verify'].lower() == request.session['verify'].lower():
    username = request.POST['username']
    password = request.POST['password']
    if request.POST['way'] == 'login':
    return HttpResponse(login(request, username, password))
    elif request.POST['way'] == 'register':
    return HttpResponse(register(request, username, password))
    else:
    return HttpResponse('验证码错误')

    def login(request, username, password):
        pass
    
    def register(request, username, password):
        pass
    
  2. OK,终于准备好所有东西了,我们开始研究django的用户认证系统吧

  1. OK,一切都准备就绪后就可以写之前那两个函数了,代码如下:
    from django.contrib.auth.models import User
    from django.contrib import auth

     def login(request, username, password):
         user = auth.authenticate(username=username, password=password)
         if user is None:
             return '登录错误'
         else:
             auth.login(request, user)
             return '登录成功'
    
     def register(request, username, password):
         try:
             User.objects.create_user(username=username, password=password).save()
             # 注册后默认为登录状态
             login(request, username, password)
             return '注册成功'
         except:
             return '已存在用户'
    
  1. 然而还没有完呢,登录注册完总该有个用户界面吧,在用户界面总该有登出的设置吧,访问用户界面时总该有确认是否已经登录了吧
  1. 我们来测试一下成果,如果你看到的跟下面的一样就证明你已经搞定了
  1. 基本功能通通都实现了,然而还不足够完善,我们还需要更多的功能
  1. 好了,现在为止用户系统才基本完善,其实还有很多需要深入的,不过目前为止还是了解到这为好,因为我们又要进入下一轮的进阶学习了。

下期文章:后台学习——django(3)(还无有)

上一篇下一篇

猜你喜欢

热点阅读