zoukankan      html  css  js  c++  java
  • django视图003

    到目前为止,虽然实现了登录,但显然用户登录信息的验证并未真正实现,目前的做法只是简单的用 if

    语句判断用户名和密码是否为“admin/admin123”,所以,我们并没有完整的用户数据。

    在上一小节执行 manage.py 的“migrate”命令时,Django 同时也帮我们生成了 auth_user 表。同时,我们 可以通过 URL 地址:http://127.0.0.1:8000/admin/ 来访问 Django 自带的 Admin 管理后台。在此,之前先来创 建登录 Admin 后台的管理员账号。

    首先我们要创建一个超级管理员的账号

    搞定

     既然创建好了我们就登陆吧

    127.0.0.1:8000/admin

    登录失败了。。。。忘记启服务了

    好了

     登录到了我们的后台

    既然 Django 已经帮我们做好用户体系,那么就直接拿来使用好了。

    打开.../sign/views.py 文件修改 login_action 函数。

    from django.contrib import auth

    def login_action(request):
       if request.method == 'POST':
    

    username = request.POST.get('username', '')
    password = request.POST.get('password', '')
    user = auth.authenticate(username=username, password=password) if user is not None:

    auth.login(request, user) # 登录
    request.session['user'] = username # 将 session 信息记录到浏览器response = HttpResponseRedirect('/event_manage/')
    return response

    else:
    return render(request,'index.html', {'error': 'username or password

    error!'})

     

    使用 authenticate()函数认证给出的用户名和密码。它接受两个参数,用户名 username 和密码 password,

    并在用户名密码正确的情况下返回一个 user 对象。如果用户名密码不正确,则 authenticate()返回 None。 通过 if 语句判断 authenticate()返回如果不为 None,说明用户认证通过。那么接下来调用 login()函数进行

    登录。login()函数接收 HttpRequest 对象和一个 user 对象。 重新使用 admin 管理后台创建用户账户来验证登录功能吧!

    “上帝为你关上了一扇门,也一定会为你打开一扇窗户”,我们为系统开发了一个需要用户认证的登录,

    然而,我们不需要通过登录也可以直接访问到登录成功的页面。
    

    现在,尝试直接访问:http://127.0.0.1:8000/event_manage/

    看!是不是直接打开了登录成功页,那为什么还需要通过登录来访问这个页面呢?所以,我们要把这些 “窗户”都关上,使用户只能通过登录来访问系统。

    再来感受一下 Django 的强大之处吧!一秒钟让你关好窗户。

    是的,就是这么简单,如果想限制某个视图函数必须登录才能访问,只需要在这个函数的前面加上@login_required 即可。

    你可以再次尝试访问/event_manage/目录(千万不要忘记清理浏览器缓存再试!),看看还能否直接访问 到。

    Django 会告诉访问的路径并不存在(404)

    如果你细心,会发布在访问被@login_required 装饰的视图时,默认会跳转的 URL 中会包含 “/accounts/login/”,为什么不让它直接跳转到登录页面呢?不但要告诉你窗户是关着的,还要帮你指引到门 的位置。

    接下来修改.../urls.py 文件,添加以下路径。......

    from sign import views

    urlpatterns = [
    url(r'^$', views.index),

    url(r'^index/$', views.index),

    url(r'^accounts/login/$', views.index),

    ]

    当用户访问:

    http://127.0.0.1:8000/

    http://127.0.0.1:8000/index/

    http://127.0.0.1:8000/event_manage/

    默认,都会跳转到登录页面。但是,如果你访问的是其它不存的路径,比如/abc/,依然会显示图 3.11 的 页面。这个时候需要设置默认的 404 页面,本书会在项目部署的章节来添加这个页面。

  • 相关阅读:
    Windows系统安装mysql5.7*时mysql服务启动失败的解决方法
    安装MySQL出现 This application requires Visual Studio 2013 x64 Redistributable.Please install the Redistributable then run this installer again
    Fiddler抓包流程
    C#使用NPOI根据模板生成Word文件功能实现
    .NET nhibernate 添加新的表运行报is not mapped的问题
    二进制原码、反码、补码和位运算
    【英语】面试常用语整理
    【检测分割算法整理】
    【Leetcode方法比较】DP/滑窗/前缀和
    【Leetcode】数学系列
  • 原文地址:https://www.cnblogs.com/lhdcg/p/9942567.html
Copyright © 2011-2022 走看看