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函数外的,所有函数前加装装饰器。

相关推荐
爱笑的眼睛111 分钟前
从零构建与深度优化:PyTorch训练循环的工程化实践
java·人工智能·python·ai
古城小栈1 分钟前
Spring Boot 4.0 虚拟线程启用配置与性能测试全解析
spring boot·后端·python
liliangcsdn2 分钟前
如何使用pytorch模拟Pearson loss训练模型
人工智能·pytorch·python
松莫莫4 分钟前
Spring Boot 整合 MQTT 全流程详解(Windows 环境)—— 从 Mosquitto 安装到消息收发实战
windows·spring boot·后端·mqtt·学习
MediaTea9 分钟前
Python 的设计哲学P08:可读性与人类语言
开发语言·python
qq_251533599 分钟前
如何使用 Python 正则表达式去除空格/制表符/换行符?
开发语言·python·正则表达式
小码编匠14 分钟前
WPF 实现高仿 Windows 通知提示框:工业级弹窗设计与实现
后端·c#·.net
狂奔小菜鸡14 分钟前
Day27 | Java集合框架之List接口详解
java·后端·java ee
未秃头的程序猿14 分钟前
《Spring Boot MongoDB革命性升级!silky-mongodb-spring-boot-starter发布,开发效率暴增300%!》
后端·mongodb
a程序小傲15 分钟前
美团二面:KAFKA能保证顺序读顺序写吗?
java·分布式·后端·kafka