Python 从0开始 一步步基于Django创建项目(12)使用装饰器login_required()限制对页面的访问

本文实现功能:

除'主页'和'注册'页之外的所有页面,都只有在用户登录后才能访问。

实施方法:在city_infos的views.py文件中,引入装饰器,并在所有视图函数前应用装饰器。

步骤如下:

1、使用import引入装饰器

python 复制代码
from django.contrib.auth.decorators import login_required #导入函数login_required()

2、在视图函数前使用装饰器

python 复制代码
#将login_required函数作为装饰器,在运行cities代码前,先运行login_required中的代码
#login_required检查用户登录情况,已经登录,才运行cities的代码
#如果未登录,就定向到登录界面
@login_required
def cities(request):
    cities = City.objects.order_by('date_added')
    context = {'cities':cities}
    return render(request,'city_infos/cities.html',context)

3、为了实现重定向,修改city_infos的setting.py文件。该文件位于项目根目录:C:\D\Python\Python310\study\snap_gram\snap_gram

在文件的最后添加如下内容:

python 复制代码
#我的设置
LOGIN_URL = 'users:login'

4、如果只在cities函数前加装'装饰器',未登录用户无法查看城市列表,但是仍旧可以使用url(例如:localhost:8000/new_city/),进行非登录用户不应该执行的操作,如下图所示:

为了防止此类情况,需要在views.py文件除index函数外的,所有函数前加装装饰器。

相关推荐
CHANG_THE_WORLD2 分钟前
Python 可变参数详解与代码示例
java·前端·python
渡我白衣4 分钟前
计算机组成原理(3):计算机软件
java·c语言·开发语言·jvm·c++·人工智能·python
倔强菜鸟7 分钟前
2025.11.21-GO语言入门(一)
开发语言·后端·golang
IT_陈寒15 分钟前
【SpringBoot 3.2实战】10倍性能优化的5个冷门技巧,90%开发者都不知道!
前端·人工智能·后端
小霖家的混江龙18 分钟前
Token 到底怎么来的? 一文读懂大模型分词的核心逻辑, 看完秒懂!
人工智能·python·llm
曲幽19 分钟前
Flask进阶必备:掌握中间件、钩子和扩展
python·flask·web·request·cors·wsgi
风生u23 分钟前
Go的并发(协程)
开发语言·后端·golang
hiber98729 分钟前
SLM-Lab安装过程(踩坑过程)
python·slm-lab
我的xiaodoujiao29 分钟前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 30--开源电商商城系统项目实战--配置测试环境地址
python·学习·测试工具·pytest
海上飞猪33 分钟前
【Python】JSON的基本使用-JSON 模式(Schema)与数据解析
开发语言·python·json