• django中的@login_required


    转:http://www.cnblogs.com/ccorz/p/Django-zhong-loginrequired-yong-fa-jian-jie.html

    1、网站开发时的登录需求:

    ===用户登录系统才可以访问某些页面

    ===如果用户没有登录而直接访问就会跳转到登录界面,而不能访问其他页面

    ===用户在跳转的登录界面中完成登录后,自动访问跳转到之前访问的地址

    实现上面的需求可以使用下面的方法

    ?===使用django自带的装饰器@login_required

    ?===在相应的view方法的前面添加@login_required

    ?==并在settings.py中配置LOGIN_URL参数

    ?===修改login.html中的表单action参数

    views.py设置:

    from django.contrib.auth.decorators import login_required

    from djangp.shortcuts import render_to_response

    from django.http import HttpResponse

    @login_required

    def myview(request):

      return render_to_response("index.html")

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

    setting.py设置

    LOGIN_URL="/accounts/login/"#这个路径需要根据你网站的实际登录地址来设置

    urls.py设置:

    from django.conf.urls import url

    from django.contrib import admin

    from app01 import views

    urlpatterns=[

      url(r"^admin/",admin.site.urls),

      url(r"^accounts/login/",views.acc_login)

    如果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"}),

    这样程序就会跳转到template/myapp/login.html

    login.html设置

  • 相关阅读:
    Java沉思录之重识String
    【python】 爬虫-爬取新闻
    【大数据】水质分析————(数据预处理)对水质图片的处理
    神经网络 鸢尾花数集预测
    【python 基础】词云
    【数据结构】字符串匹配
    【算法】 分治
    【数据结构】队列
    【数据结构】栈 的 顺序表示
    【数据结构】 线性表 的 链式存储结构
  • 原文地址:https://www.cnblogs.com/yingqml/p/6594856.html
Copyright © 2020-2023  润新知