Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1423549
  • 博文数量: 185
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2664
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-01 13:46
个人简介

鸟在笼中,恨关羽不能张飞;Survival of the fittest

文章分类

全部博文(185)

分类: LINUX

2015-12-11 14:59:06

上次介绍了用户登录界面的使用,主要是使用bootstrap,这方面有兴趣的朋友可以去深入的学习下。
另外上次也给出了一些用户登录以及注册的函数,可能一下子代码有点多,这次主要是简化新加用户的方法和使用,
这些掌握了以后可以接着上次说的函数来做,因为上次给出的包含错误信息,比较完整。

以我们最早说的,首先要创建account这个app,相信大家都会了。
python manage.py startapp account

然后在这里会有如下几个文件,没有的话可以自行创建(test.py文件不是)。


因为这次只是说简版的各个函数,所以文件account/urls.py内容如下
# -*- coding: UTF-8 -*-
from django.conf.urls import patterns, include, url
urlpatterns = patterns('account.views',
    (r'^$','login'),
    (r'^index/$','login'),
    (r'^login/$','login'),
    (r'^logout/$','logout'),
)

account/views.py文件如下


点击(此处)折叠或打开

  1. # -*- coding: utf-8 -*-
  2. from django.shortcuts import render_to_response
  3. from django.http import HttpResponseRedirect
  4. from django.template import RequestContext
  5. from django.contrib import auth


  6. def index(request):
  7.     return render_to_response('account/login.html')

  8. def login(request):
  9.     username = request.POST.get('username')
  10.     password = request.POST.get('password')
  11.     user = auth.authenticate(username=username,password=password)
  12.     if request.POST:
  13.         if user is not None and user.is_active:
  14.             auth.login(request,user)
  15.             return HttpResponseRedirect('/idc/dashboard/')
  16.         else:
  17.             return render_to_response('account/login.html',{'login_err': "Wrong username or password"}, context_instance=RequestContext(request))
  18.     else:
  19.         return render_to_response('account/login.html',context_instance=RequestContext(request))

  20. def logout(request):
  21.     if not request.user.is_authenticated():
  22.         return render_to_response('account/login.html')
  23.     user=request.user
  24.     auth.logout(request)
  25.     return render_to_response('account/login.html',{})



至于templates/account/login.html这个页面可以找其它的,我只是根据我自己的选择来确定的,代码如下。



点击(此处)折叠或打开

  1. <!DOCTYPE html>
  2. <html lang="en">
  3.   <head>
  4.     <meta charset="utf-8">
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1">
  7.     
  8.     <meta name="description" content="">
  9.     <meta name="author" content="">
  10.     <link rel="icon" href="../../favicon.ico">

  11.     <title>liuxin运维管理平台</title>

  12.     
  13.     <link href="/static/css/bootstrap.min.css" rel="stylesheet">


  14.     
  15.     <link href="/static/css/signin.css" rel="stylesheet">

  16.     
  17.     
  18.     <script src="/static/js/ie-emulation-modes-warning.js"></script>

  19.     
  20.     


  21.     
  22.   </head>

  23.   <body>


  24.     <div class="container">

  25.       <form class="form-signin" action='/account/login/' method="post">
  26.         <h2 class="form-signin-heading">Please sign in</h2>
  27.         <label for="inputText" class="sr-only">Username</label>
  28.         <input type="text" name='username' class="form-control" placeholder="Username" required autofocus>
  29.         <label for="inputPassword" class="sr-only">Password</label>
  30.         <input type="password" name='password' class="form-control" placeholder="Password" required>
  31.         <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
  32.           <br>

  33. {{ login_err }}
  34.       </form>

  35.     </div>

  36.     
  37.     <script src="/static/js/ie10-viewport-bug-workaround.js"></script>
  38.   </body>
  39. </html>



这里可以要注意下引用js、css等静态文件位置,可以根据自己的实际情况来调整。
另外就是错误变量{{ login_err }}的引入,可以看到在login函数里会有这么一个字典来说明这些。
模板引入变量以各种使用方法后面会有介绍。函数的返回方式后面也会介绍,这里主要是先把说的这些做好。

目前为止登录页面的web以及url、登录函数已经完成,启动django就可以了。
但是我们现在好像并没有创建用户,这里不再说注册那种,直接以更简单直接的管理操作。
首先,我们使用python manage.py syncdb来同步模型到数据库。我们这里的acount模块并没有任何的模型,
但是在settins里已经设置了admin相关模型,所以根据提示来创建管理员用户,如下图。

这个liuxin就是管理员了,可以直接在web页面登录。因为这里的/idc/dashboard/还没有写,所以跳不到相应的url
这里把这句改成 并且在最上面加上以下这句
from django.http import HttpResponse

这样就可以看到登录成功了。





  ?编辑
 添加媒体


阅读(10032) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~