第63天-django学习(十二)

补充模块importlib

介绍

        importlib模块是Python中用于动态加载和导入模块的内置模块。它提供了一组函数和类,使得我们可以在运行时根据需要加载模块,并且可以对已导入的模块进行操作和管理。

动态加载模块

# 导入模块 : 动态加载一个模块
import importlib
​
# 定义模块的名字
module_name = 'math'
# 动态导入模块
math_module = importlib.import_module(module_name)

导入指定模块成员

# 导入模块 : 动态加载一个模块
import importlib
​
# 定义模块的名字
module_name = 'math'
# 动态导入模块
math_module = importlib.import_module(module_name)
# 从模块中获取相关的值
sqrt_func = getattr(math_module, 'sqrt')
print(sqrt_func) # <built-in function sqrt>

重新加载模块

import importlib
​
# 要重新加载的模块名
module_name = 'my_module'
​
# 加载模块
my_module = importlib.import_module(module_name)
​
# 重新加载模块
my_module = importlib.reload(my_module)

获取已导入的模块列表

import sys
​
for module_name, module in sys.modules.items():print(module_name, module)

CSRF跨域请求伪造

介绍

        CSRF(Cross-Site Request Forgery)跨站请求伪造是一种常见的网络攻击方式。

        攻击者通过诱导受害者访问恶意网站或点击恶意链接

- 将恶意请求发送到目标网站上

- 利用受害者在目标网站中已登录的身份来执行某些操作

- 从而达到攻击的目的。

        要保护自己免受CSRF攻击,网站开发者可以采取以下措施:

- 使用CSRF令牌:  - 在用户的请求中添加随机生成的令牌,并将该令牌保存在用户会话中。  - 每次提交请求时都会验证该令牌,以确保请求是合法的。 - 启用SameSite属性:  - 将Cookie的SameSite属性设置为Strict或Lax,以限制跨站请求。  - 这可以在一定程度上缓解CSRF攻击。 - 严格验证请求来源:  - 服务器端可以验证请求的来源是否为预期的网站域名  - 例如检查HTTP Referer头部。 - 使用验证码:  - 在敏感操作(如转账、更改密码等)上使用验证码  - 增加用户身份验证的防护。

正常服务端

        页面

<h1>这是正规的网站</h1>
​
<form action="" method="post"><p>当前账户 :>>>> <input type="text" name="start_user"></p><p>目标账户 :>>>> <input type="text" name="end_user"></p><p>转账金额 :>>>> <input type="text" name="money"></p><input type="submit">
</form>

        视图函数

def transform_normal(request):if request.method == "POST":user_start = request.POST.get("start_user")user_end = request.POST.get("end_user")money = request.POST.get("money")return HttpResponse(f"当前账户 :>>> {user_start} 向目标用户 :>>> {user_end} 转账了 :>>> {money}")return render(request, 'transform_normal.html')

钓鱼服务端

        页面

<h1>这是钓鱼的网站</h1>
​
<form action="http://127.0.0.1:8000/transform_normal/" method="post"><p>当前账户 :>>>> <input type="text" name="start_user" ></p><p>目标账户 :>>>> <input type="text"></p><p><input type="text" name="end_user" value="Hopes" style="display: none"></p><p>转账金额 :>>>> <input type="text" name="money"></p><input type="submit">
</form>

        视图函数

def transform_normal(request):return render(request, 'transform_normal.html')

crsf校验

form表单校验
<form action="" method="post">
{% csrf_token %}<p>username:<input type="text" name="username"></p><p>transfer_user<input type="password" name="password"></p><p>money<input type="text" name="money"></p><input type="submit">
</form>
ajax校验
<button id="b1">ajax请求提交</button>
​
<script>$("#b1").click(function () {$.ajax({url: '',type: 'post',// (2) 利用模板语法提供的快捷书写data: {"username": "dream", "csrfmiddlewaretoken": "{{ csrf_token }}"},success: function () {}})})
</script>

Auth模块

引入

    我们在创建一个Django项目之后,直接执行数据库迁移命令会自动生成很多表,其中有:django_session、uth_user两张表。jango在启动之后就可以直接访问admin路由,需要输入用户名和密码,数据参考的就是auth_user表,并且必须是管理员用户才能进入

创建超级用户(管理员)

python3 manage.py createsuperuser

依赖于auth_user表完成登录注册功能

        页面

<form action="" method="post">{% csrf_token %}<p>username:<input type="text" name="username"></p><p>password:<input type="text" name="password"></p><input type="submit" class="btn btn-success">
</form>

        视图函数

def login(request):if request.method == 'POST':username = request.POST.get('username')password = request.POST.get('password')user_obj = auth.authenticate(request, username=username, password=password)print(user_obj) print(user_obj.username) print(user_obj.password)  print(user_obj) 
​return render(request, 'login.html')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/205462.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java学习part40collections工具类

162-集合框架-Collections工具类的使用_哔哩哔哩_bilibili 1.collections工具类 感觉类似c的algorithm包&#xff0c;提供了很多集合的操作方法 2.排序 3.查找 4.复制替换 5.添加&#xff0c;同步

Dockerfile详解#如何编写自己的Dockerfile

文章目录 前言编写规则指令详解FROM&#xff1a;基础镜像LABEL&#xff1a;镜像描述信息MAINTAINER&#xff1a;添加作者信息COPY&#xff1a;从宿主机复制文件到镜像中ADD&#xff1a;从宿主机复制文件到镜像中WORKDIR&#xff1a;设置工作目录 前言 Dockerfile是编写docker镜…

TensorRT之getBindingIndex

在使用 TensorRT&#xff08;NVIDIA 的推理引擎&#xff09;时&#xff0c;getBindingIndex 是一个用于获取绑定索引的函数。TensorRT 将输入和输出张量绑定到引擎的输入和输出索引上。getBindingIndex 函数用于检索给定名称的输入或输出张量在引擎中的索引。 int getBindingI…

【Python百宝箱】极客之选:掌握Python内外库的进程管理技巧

Python系统编程大揭秘&#xff1a;掌握操作系统接口、进程管理与系统信息 前言 在当今软件开发领域&#xff0c;系统编程是一项至关重要的技能&#xff0c;尤其是在涉及到操作系统接口、进程管理以及系统信息的处理时。Python作为一门强大而灵活的编程语言&#xff0c;提供了…

马克思主义原理期末复习大题

导论: 1.什么是马克思主义?马克思主义具有哪些基本特征? 马克思主义是由马克思和恩格斯创立并为后继者所不断发展的科学理论体系,是关于自然,社会和人类思维发展一般规律的学说,是关于社会主义必然代替资本主义,最终实现共产主义的学说,是关于无产阶级解放,全人类解…

Vue 静态渲染 v-pre

v-pre 指令&#xff1a;用于阻止 Vue 解析这个标签&#xff0c;直接渲染到页面中。 语法格式&#xff1a; <div v-pre> {{ 数据 }} </div> 基础使用&#xff1a; <template><h3>静态渲染 v-pre</h3><p v-pre>静态渲染&#xff1a;{{ n…

C++刷题 -- 链表

C刷题 – 链表 文章目录 C刷题 -- 链表1.删除链表的倒数第 N 个结点2.链表相交3.环形链表 1.删除链表的倒数第 N 个结点 https://leetcode.cn/problems/remove-nth-node-from-end-of-list/ 快慢指针的应用 fast指针先移动N步&#xff0c;slow依然指向head&#xff1b;然后fa…

短视频文案生成器有哪些?【2024新版短视频文案生成器】

在当今数字化社交时代&#xff0c;短视频已经成为人们生活中不可或缺的一部分。然而&#xff0c;想要制作引人注目、独具创意的短视频&#xff0c;光有精彩的画面和音效可能不够&#xff0c;一个吸引眼球的短视频文案也是至关重要的。本文将专心分享短视频文案生成器的种类&…

OpenTiny Vue 3.12.0 发布:文档大优化!增加水印和二维码两个新组件

你好&#xff0c;我是 Kagol。 非常高兴跟大家宣布&#xff0c;2023年11月30日&#xff0c;OpenTiny Vue 发布了 v3.12.0 &#x1f389;。 OpenTiny 每次大版本发布&#xff0c;都会给大家带来一些实用的新特性&#xff0c;10.24 我们发布了 v3.11.0 版本&#xff0c;增加了富…

做题笔记:SQL Sever 方式做牛客SQL的题目--VQ29

----VQ29 验证刷题效果&#xff0c;输出题目真实通过率 牛客刷题记录表done_questions_record&#xff0c;为验证重复刷题率&#xff0c;需要我们查找一些数据&#xff1a; question_pass_rate 表示每个用户不同题目的通过率&#xff08;同一用户同一题重复提交通过仅计算一次&…

第3讲、Hyper-V 在Windows Server 2012 R2新增特性:

1、新的VHDX&#xff08;Virtual Hard Disk X&#xff09;格式 1&#xff09;打破VHD最大存储能力2TB的限制&#xff0c;VHDX最大可使用64TB虚拟磁盘空间 2&#xff09;VHD扇区大小被限制为512Byte&#xff0c;但VHDX已经改变为支持更加优秀的4KByte 3…

CFLAGS、CXXFLAGS、FFLAGS、FCFLAGS、LDFLAGS、LD_LIBRARY_PATH区别

这些环境变量在编译和链接过程中扮演着重要的角色。下面是对每个环境变量的详细说明及示例&#xff1a; CFLAGS&#xff1a;用于设置C编译器的编译选项。 示例&#xff1a;将优化级别设置为最高&#xff0c;启用所有警告信息&#xff0c;并指定目标体系结构为x86-64。 export C…

企业级自动化测试理论(目标、框架要素、深入理解测试金字塔)

1. 自动化测试的目标 自动化测试的目标是加快研发过程&#xff0c;而不是试图省钱。 迅速检测出新版本中不稳定的变更。 迅速暴露程序回归的错误。 迅速报告问题&#xff0c; 因为这会使程序错误修改更容易。 为了达到目标&#xff0c;所需要的测试能力要求 测试技术&…

YITH WooCommerce Questions and Answers电商网站问答功能高级版

点击阅读YITH WooCommerce Questions and Answers电商网站问答功能高级版原文 YITH WooCommerce Questions and Answers电商网站问答高级版的作用在您的产品页面中构建强大的问答部分&#xff0c;以便您的客户可以找到问题的答案并毫无疑问地购买。 您如何从中受益&#xff1…

Java中富文本转markdown

实现富文本即html语法转md&#xff0c;要求是尽可能展示效果一样&#xff0c;可以有少许误差&#xff0c;另外只实现了html中的body转md&#xff0c;其他标签如head等未实现。 大致思路是&#xff1a;通过jsoup工具获取html节点&#xff0c;再穷举替换。前提是熟悉html以及md语…

Doris 编译错误 error: No best alternative for libs/context/build/asm_sources

错误 error: No best alternative for libs/context/build/asm_sources解决方案 打开 doris/thirdparty/src/boost_1_81_0/libs/context/build/Jamfile.v2 在文件未添加 alias asm_sources: asm/make_arm_aapcs_elf_gas.Sasm/jump_arm_aapcs_elf_gas.Sasm/ontop_arm_aapcs_el…

LabVIEW远程监控

LabVIEW远程监控 远程监控的应用场景 从办公室远程监控工厂车间的测试设备。 在世界另一端的偏远地区监控客户现场的发电设备。 从公司远程监控外场的产品。 技术更新与方法 自2018年以来&#xff0c;NI对基于Web的应用程序支持大幅增长。一些最初的方法&#xff08;如Lab…

【PyTorch】模型的基本操作

文章目录 1. 模型的创建1.1. 创建方法1.1.1. 通过使用模型组件1.1.2. 通过继承nn.Module类 1.2. 将模型转移到GPU 2. 模型参数初始化3. 模型的保存与加载3.1. 只保存参数3.2. 保存模型和参数 1. 模型的创建 1.1. 创建方法 1.1.1. 通过使用模型组件 可以直接使用模型组件快速…

3.镜像加速器

目录 1 阿里云 2 网易云 从网络上拉取镜像的时候使用默认的源可能会慢&#xff0c;用国内的源会快一些 1 阿里云 访问 阿里云-计算&#xff0c;为了无法计算的价值 然后登录&#xff0c;登录后搜索 容器镜像服务 点击容器镜像服务 点击管理控制台 点击 镜像工具->镜像…

【web安全】文件包含漏洞详细整理

前言 菜某的笔记总结&#xff0c;如有错误请指正。 本文用的是PHP语言作为案例 文件包含漏洞的概念 开发者使用include&#xff08;&#xff09;等函数&#xff0c;可以把别的文件中的代码引入当前文件中执行&#xff0c;而又没有对用户输入的内容进行充分的过滤&#xff0…