【Django】@login_required用法简介

在django项目中,经常会看到下面这样的代码:

[python] view plain copy

  1. from django.contrib.auth.decorators import login_required
  2. @login_required
  3. def my_view(request):
  4. ...

里面有一个@login_required标签。其作用就是告诉程序,使用这个方法是要求用户登录的。

1.如果用户还没有登录,默认会跳转到‘/accounts/login/’。这个值可以在settings文件中通过LOGIN_URL参数来设定。(后面还会自动加上你请求的url作为登录后跳转的地址,如:/accounts/login/?next=/polls/3/ 登录完成之后,会去请求/poll/3)

2.如果用户登录了,那么该方法就可以正常执行

如果LOGIN_URL使用默认值,那么在urls.py中还需要进行如下设置:(加入下面这句)

(r'^accounts/login/$', 'django.contrib.auth.views.login'),

这样的话,如果未登录,程序会默认跳转到“templates\registration\login.html”这个模板。

如果想换个路径,那就再加个template_name参数,如下:

(r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'myapp/login.html'}),

这样程序就会跳转到templates\myapp\login.html”

除了login这个有用的方法之外,auth模块还提供很多有用的方法,比如:

logout(request[, next_page, template_name, redirect_field_name])

password_change(request[, template_name, post_change_redirect, password_change_form])

password_change_done(request[, template_name])

password_reset(request[, is_admin_site, template_name, email_template_name, password_reset_form,token_generator, post_reset_redirect, from_email])

password_reset_done(request[, template_name])


用法示例:

(r'^change_passwd/$', 'django.contrib.auth.views.password_change', {
    'template_name': 'change_passwd.html',
    'post_change_redirect': '/',
}),
(r'^reset_passwd/$', 'django.contrib.auth.views.password_reset', {
    'template_name': 'reset_passwd.html',
    'email_template_name': 'reset_passwd_email.html',
    'post_reset_redirect': '/reset_done/',
    'from_email': '[email protected]',
}),
(r'^reset_confirm/(?P<uidb36>[0-9A-Za-z]{1,13})-(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', \
    'django.contrib.auth.views.password_reset_confirm', {
        'template_name': 'reset_confirm.html',
        'post_reset_redirect': '/signin/',
    }
),
(r'^reset_done/$', 'django.views.generic.simple.direct_to_template', {'template': 'message.html','extra_context': {
    'msg': _(u'我们已将一封包含恢复密码步骤的邮件发到了您的邮箱,请查收'),
}}),

原文地址:http://blog.51cto.com/11886896/2058620

时间: 2024-07-31 13:13:18

【Django】@login_required用法简介的相关文章

Django中 @login_required用法简介

我们在网站开发过程中,经常会遇到这样的需求: 用户登陆系统才可以访问某些页面 如果用户没有登陆而直接访问就会跳转到登陆界面,而不能访问其他页面. 用户在跳转的登陆界面中完成登陆后,自动访问跳转到之前访问的地址 要实现这样的需求其实很简单: 使用django自带的装饰器 @login_required. 在相应的view方法的前面添加@login_required 并在settings.py中配置LOGIN_URL参数 修改login.html中的表单action参数 view.py设置: fro

@login_required用法简介

在django项目中,经常会看到下面这样的代码: from django.contrib.auth.decorators import login_required @login_required def my_view(request): ... 里面有一个@login_required标签.其作用就是告诉程序,使用这个方法是要求用户登录的. 1.如果用户还没有登录,默认会跳转到‘/accounts/login/’.这个值可以在settings文件中通过LOGIN_URL参数来设定.(后面还会

压力测试工具tsung用法简介

tsung是用erlang开发的一款简单易用的压力测试工具,可以生成成千上万的用户模拟对服务器进行访问.目前对tsung的理解也仅限于会简单的应用,其内部结构没有深入研究过. 1.安装 tsung是用erlang编写的,所以首先安装erlang的运行环境.然后就是按照tsung的官网下载编译tsung.需要注意的是,生成测试报告需要gnuplot和perl的支持,其中perl需要安装Template扩展.具体安装过程请看相关手册或者google之. 2.配置文件 默认情况下,tsung会加载配置

display:table-cell的用法简介

display:table-cell的用法简介:display属性的使用相当频繁,比如display:block或者display:inline等,但是对于display:table-cell可能比较陌生,因为此属性在特定的情况下会发挥很大的作用,下面就简单介绍它的作用,先看一段代码实例: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="a

Intent用法简介

Intent作为联系各Activity之间的纽带,其作用并不仅仅只限于简单的数据传递.通过其自带的属性,其实可以方便的完成很多较为复杂的操作.例如直接调用拨号功能.直接自动调用合适的程序打开不同类型的文件等等.诸如此类,都可以通过设置Intent属性来完成. Intent主要有以下四个重要属性,它们分别为:            Action:Action属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作.通过setAction()方法或在清单文件AndroidManifest.xm

qss(stylesheet)用法简介(一)

QPushButton按钮evilButton  { background-color: red } QPushButton#evilButton { background-color: red; border-style: outset; border-width: 2px; border-color: beige; } QPushButton#evilButton { background-color: red; border-style: outset; border-width: 2px

grep用法简介之二

上一篇文章总结了一些grep基本用法.在这次的内容里介绍grep和正则表达式结合使用的方法. 首先介绍下正则表达式,正则表达式非基本和扩展两种. 名词释义:正则表达式:正则表达式其实就是描述某些复杂规则字符串的代码集合. 元字符:在正则表达式中具有特殊意义的专用字符 正则表达式 基本正则表达式元字符: ^ :表示行首    $ :表示行尾      ^$:表示空白行      * :表示星之前字符的0个或任意个字符,例如:a*:表示0个a或任意一个a的字符,所以就是全显示出来了.      .

Django RequestContext用法

模版中的变量由context中的值来替换,如果在多个页面模版中含有相同的变量,比如:每个页面都需要{{user}},笨办法就是在每个页面的请求视图中都把user放到context中. Python代码   from django.temlate import loader,Context t = loader.get_template('xx.html') c = Context({'user':'zhangsan'}) return HttpResponse(t.render(c))   #h

grep用法简介之一

grep是Linux中个非常重要也是经常使用的文本搜索工具,最近又回顾学习了一遍,趁热自己总结一下. Linux中关于grep的命令一共有三个(以centos6.4为例) grep  :只支持基本正则表达式 egrep :支持扩展正则表达式,此命令其实是 "grep -E" 的别名 fgrep : 不支持正则表达式,搜索速度在3个命令中最快. grep命令用法格式: grep [OPTIONS] PATTERN [FILE...] 主要参数 --color=auto :使匹配的字符用彩