首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
在考古的菜鸡很热情
门头沟学院 测试工程师
发布于陕西
关注
已关注
取消关注
@努力学习的狐狸:
Django 0 - 1 搭建web 应用
django的基本架构Python的Web框架中,Django无疑是最有代表性的重量级选手,开发者可以基于Django快速的开发可靠的Web应用程序,因为它减少了Web开发中不必要的开销,对常用的设计和开发模式进行了封装,并对MVC架构(系统中的组件分为模型(Model)、视图(View)和控制器(Controller)三个部分并借此实现模型(数据)和视图(显示)的解耦合。)提供了支持(Django中称之为MTV架构。django的架构思想是MTV, Model、Template、views,views和django本身完成了controller的功能,model完成数据的功能,Template完成了显示的功能,即页面内容。初始化一个django项目后会生成以下文件:hellodjango/__init__.py:空文件,告诉Python解释器这个目录应该被视为一个Python的包。hellodjango/settings.py:Django项目的配置文件。hellodjango/urls.py:Django项目的URL映射声明,就像是网站的“目录”。hellodjango/wsgi.py:项目运行在WSGI兼容Web服务器上的入口文件。manage.py: 管理Django项目的脚本程序。创建自己的django应用:python manage.py startapp first :__init__.py:一个空文件,告诉Python解释器这个目录应该被视为一个Python的包。admin.py:可以用来注册模型,用于在Django框架自带的管理后台中管理模型。apps.py:当前应用的配置文件。migrations:存放与模型有关的数据库迁移信息。__init__.py:一个空文件,告诉Python解释器这个目录应该被视为一个Python的包。models.py:存放应用的数据模型(MTV中的M)。在 Django 中,manage.py 是一个命令行工具,用于执行各种 Django 相关的任务,如创建数据库、运行开发服务器、执行数据迁移、创建超级用户等。以下是一些 manage.py 常用的命令:runserver: 启动 Django 开发服务器。makemigrations: 根据模型的更改,创建新的迁移文件。migrate: 应用所有未应用的数据库迁移。createsuperuser: 创建一个超级用户账户。startapp: 创建一个新的 Django 应用程序。test: 运行测试套件。tests.py:包含测试应用各项功能的测试类和测试函数。views.py:处理用户HTTP请求并返回HTTP响应的函数或类(MTV中的V)。前后端如何实现通信前端发送请求:前端页面通过 URL 发送请求到后端 Django 应用程序。请求可以是 GET 请求或 POST 请求。Django 后端处理请求:Django 后端接收到前端发送的请求后,根据 URL 和请求方法来确定要调用的视图函数。视图函数处理请求:视图函数是 Django 应用程序的核心,它处理来自前端的请求,并根据需要从数据库中获取数据,对数据进行处理,并返回给前端。后端返回响应:视图函数将处理后的数据以 JSON、XML、HTML 或其他格式返回给前端。前端处理响应:前端页面接收到后端返回的数据后,可以将数据显示到页面上,或者根据数据进行下一步操作。在 Django 中,前端页面可以使用 Django 提供的模板语言进行渲染,或者使用前端框架(如 Vue、React 等)与 Django 后端进行交互。当使用模板语言进行渲染时,Django 将动态生成 HTML 页面,并将渲染后的页面返回给前端。如果使用前端框架进行交互,则可以通过 AJAX 发送请求并接收响应,从而实现动态更新页面内容的效果。用户追踪实现方式以及用户登陆验证CSRF:为了防止跨站请求,django的模板中可以添加token,如果请求的时候没有添加token就会收到403 forbidden的错误指令。大多数的web网站都要追踪用户数据,判断用户的登录状态,以此达到用户留存的目的。在服务器端,记住用户的方式最简单的办法就是创建一个对象用来存储用户信息,这个对象就是session,session是跟随HTTP请求的,但是http请求是无连接(每次请求和响应的过程中,服务器一旦完成对客户端请求的响应之后就断开连接)、无状态(客户端再次发起对服务器的请求时,服务器无法得知这个客户端之前的任何信息)的协议,即使服务器通过session保存了用户数据,也需要一个东西来将session和用户对应起来,也就是session id,我们通过session ID,这样就能找到相对应的session完成用户追踪了。存储session id有以下几种方式:URL重写。直接将session id放在url中作为参数存储。隐藏域(隐式表单域)。在提交表单的时候,可以通过在表单中设置隐藏域向服务器发送额外的数据。例如:<input type="hidden" name="sessionid" value="123456">session id存储在浏览器本地的cookie、local storage、sessionStorage、IndexedDB等里面。Django对于session的支持默认的配置文件settings.py文件中已经激活了一个名为SessionMiddleware的中间件。这个中间件中包含了对session的操作和对cookie的操作函数。默认情况下,django会将session的信息保存在mysql数据库中,但是大量的session数据存在本地会导致性能瓶颈,所以更好的做法是使用nosql,将session数据存储在redis这种Nosql数据库中。session过期时间可以通过session_cookie_age 来设置时间,也可以使用SESSION_EXPIRE_AT_BROWSER_CLOSE = True,设置只要关闭浏览器窗口session就过期。cookie 的存储和cookie的替代品在视图函数中读写cookieDjango封装的HttpRequest和HttpResponse对象分别提供了读写cookie的操作。HttpRequest封装的属性和方法:COOKIES属性 - 该属性包含了HTTP请求携带的所有cookie。get_signed_cookie方法 - 获取带签名的cookie,如果签名验证失败,会产生BadSignature异常。HttpResponse封装的方法:set_cookie方法 - 该方法可以设置一组键值对并将其最终将写入浏览器。set_signed_cookie方法 - 跟上面的方法作用相似,但是会对cookie进行签名来达到防篡改的作用。因为如果篡改了cookie中的数据,在不知道密钥的情况下是无法生成有效的签名,这样服务器在读取cookie时会发现数据与签名不一致从而产生BadSignature异常。需要说明的是,这里所说的密钥就是我们在Django项目配置文件中指定的SECRET_KEY。激活SessionMiddleware之后,每个HttpRequest对象都会绑定一个session属性,它是一个类似字典的对象,除了保存用户数据之外还提供了检测浏览器是否支持cookie的方法,包括:set_test_cookie方法 - 设置用于测试的cookie。test_cookie_worked方法 - 检测测试cookie是否工作。delete_test_cookie方法 - 删除用于测试的cookie。set_expiry方法 - 设置会话的过期时间。get_expire_age/get_expire_date方法 - 获取会话的过期时间。clear_expired方法 - 清理过期的会话。cookie的替代品在实际开发中是不会在cookie中保存用户的敏感信息(如用户的密码、信用卡的账号等)的,而且保存在cookie中的数据一般也会做好编码和签名的工作。对于支持HTML5的浏览器来说,可以使用localStorage和sessionStorage做为cookie的替代方案,相信从名字上你就能听出二者的差别,存储在localStorage的数据可以长期保留;而存储在sessionStorage的数据会在浏览器关闭时会被清除 。
点赞 0
评论 1
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
03-03 11:45
深圳技术大学 单片机
求锐评!!!
点赞
评论
收藏
分享
02-27 20:03
快手_后端开发
AI认知篇2:Agent vs 传统编程 vs Workflow 的本质区别
前言这是我的agent系列文章的第2篇,该系列分为三部分:AI认知篇:详细讲解相关基础概念AI实践篇:分享诸如skills怎么写、怎么ai coding、怎么写好prompt等的最佳实践AI八股篇:分享我自己整理的应付大模型应用开发岗位必备的八股笔记如果觉得有帮助,欢迎关注我并期待后续文章!预期是日更哦!当天没更可能是因为太累了,周末会弥补的。传统编程与 Workflow 是 “人提前定好所有逻辑”,Agent 是 “AI 自主做决策”—— 这一本质差异,让它能解决前者搞不定的问题,成为更具差异化的新交互范式。一、三者核心对比表开发技能需掌握编程语言、算法等专业知识理解编程原理 + 图形化工具...
后端及ai应用开发双修知...
点赞
评论
收藏
分享
02-24 20:09
门头沟学院 软件测试
民办本科春招找测试还有希望嘛,目前写的简历,求指教
点赞
评论
收藏
分享
01-27 15:36
门头沟学院 Java
Java春招
大家帮我看看简历,有什么建议吗
点赞
评论
收藏
分享
昨天 14:43
门头沟学院 C++
面试大手子必刷题
提到算法工程师面试,第一反应就是“头疼”——不仅要懂模型架构、推导数学公式,还要和开发岗一样手撕代码。面对题海战术,很多人看到 LeetCode 上两三千道题就发怵,其实大可不必。面试官让你手撕代码,核心是考察你的逻辑思维、代码规范、边界条件处理以及沟通能力,而不是看你是不是个无情的背题机器。首先,必须夯实基础。对初学者来说,树、链表、双指针, 永远的神,虽然有些老,但里面的考察非常经典,是国内大厂面试的基石。重点就是 链表反转(各种变体)、二叉树遍历、栈与队列的相互实现。中阶就是Hot 100,哈希表、双指针、滑动窗口、动态规划(背包问题、打家劫舍系列)、回溯算法(排列组合问题),这其中难免...
面试___岗的必刷题单
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
我做过的,被面试官夸爆的那些Ai项目(一)
1.7W
2
...
AI岗面试必问,附上我的回答思路
1.2W
3
...
暑期实习 字节三面
9832
4
...
我做过的,被面试官夸爆的那些Ai项目(二)
7387
5
...
3.2字节AI开发春招一面
7374
6
...
腾讯一面面经
6555
7
...
面试官问“RAG各模块的优化策略有哪些”,怎么回答?
5957
8
...
京东一面面经
4397
9
...
腾讯提前批一面面经(挑战全网最晚hhh,热乎的~)
4180
10
...
大厂血泪史之试用期实用技巧
3211
创作者周榜
更多
正在热议
更多
#
实习生至暗时刻
#
7219次浏览
133人参与
#
AI求职记录
#
3620次浏览
143人参与
#
神州信息求职进展汇总
#
2289次浏览
47人参与
#
交出你的校招焚诀
#
2508次浏览
55人参与
#
你见过最离谱的招聘要求是什么?
#
260802次浏览
1758人参与
#
面试___岗的必刷题单
#
4047次浏览
70人参与
#
通信和硬件还有转码的必要吗
#
92931次浏览
604人参与
#
机械制造薪资爆料
#
1951040次浏览
11058人参与
#
AI面试问题分享
#
6321次浏览
142人参与
#
哪些公司开暑期实习了?
#
7585次浏览
60人参与
#
三月的小目标
#
4289次浏览
84人参与
#
春招开局,你有保底offer吗?
#
11729次浏览
122人参与
#
实习生的生存小技巧
#
3545次浏览
80人参与
#
你经历过哪些AI幻觉?
#
2449次浏览
49人参与
#
小厂一定不能去吗?
#
13167次浏览
126人参与
#
找AI工作应该卷什么?
#
1639次浏览
39人参与
#
薪资爆料
#
387913次浏览
2160人参与
#
面试时间长是好事吗?
#
129761次浏览
742人参与
#
参加哪些竞赛对找工作有帮助?
#
31382次浏览
234人参与
#
你今年的保底offer是哪家
#
172236次浏览
722人参与
#
十二月请对我好一点
#
84803次浏览
688人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务