首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
07-28 08:40
中国人民大学 Java
分享B站开发实习生技术面凉经
哔哩哔哩跨平台开发实习生拷打项目:请详细介绍你参与过的与跨平台开发相关的项目,包括项目背景、你的职责以及遇到的挑战和解决方案。数据结构与算法:举例说明你在实际项目中运用过的一种数据结构和算法,并阐述选择它们的原因。现代编程语言:你掌握的 C++、Kotlin、Swift 中,选择一种语言,谈谈它在跨平台开发中的优势和劣势。操作系统原理:简述操作系统的进程和线程的区别,以及在跨平台开发中如何处理多线程问题。计算机网络:解释 HTTP 协议在跨平台移动 App 开发中的应用,以及如何优化网络请求。数据库:在跨平台开发中,如何选择合适的数据库,以及如何处理不同平台数据库的兼容性问题。基础组件研发:如...
查看12道真题和解析
点赞
评论
收藏
分享
07-30 13:48
中南大学 营销
大家在实习中做过的dirtywork都有啥?
我第一个来:买咖啡、买午饭、开发票、报销……
正在实习的你,在做dir...
点赞
评论
收藏
分享
07-03 17:09
广州理工学院 Web前端
已经找累了
苍蓝星上艾露:
这简历。。。可以试试我写的开源简历优化工具https://github.com/weicanie/prisma-ai
点赞
评论
收藏
分享
07-05 15:02
已编辑
中国科学技术大学 科研助理
一面
面试70min左右,最后的手撕代码有思路但没写出来
牛客nb666号:
看数据范围, -1e4~1e4, 用一个计数数组存一下, 再按个数让k减到0就行; 堆排不是O(n)的, 快速选择算法是O(n)但随机性较强
点赞
评论
收藏
分享
昨天 12:07
上海大学 硬件开发
韶音科技二面
感觉有点紧张,有几个问题答得不好,可能要凉了
韶音科技二面158人在聊
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
都是 dirty work,为什么别人的简历上就能言之有物🤔
1.6W
2
...
百度提前批 三面
3072
3
...
虾皮后端一面(已挂)
2724
4
...
干活最少的实习生因为长得漂亮转正了
2362
5
...
7.30百度提前批一面
1951
6
...
百度提前批,三面被推迟一周,喜提秋招第一凉
1756
7
...
QQ提前批一面凉经
1742
8
...
27双非百度offer timeline
1724
9
...
面试劫匪??????
1602
10
...
7.30滴滴提前批一面凉经
1578
创作者周榜
更多
正在热议
更多
#
你遇到最难的面试题目是_
#
13052次浏览
176人参与
#
26届的你,投了哪些公司?
#
32623次浏览
386人参与
#
中兴秋招
#
201834次浏览
2265人参与
#
简历上的经历如何包装
#
20151次浏览
655人参与
#
反问环节如何提问
#
95202次浏览
1943人参与
#
你最讨厌面试问你什么?
#
22240次浏览
251人参与
#
我对___祛魅了
#
40251次浏览
386人参与
#
如何看待offer收割机的行为
#
814251次浏览
6070人参与
#
你跟室友的关系怎么样?
#
5534次浏览
89人参与
#
工作中哪个瞬间让你想离职
#
58651次浏览
522人参与
#
什么样的背景能拿SSP?
#
27339次浏览
175人参与
#
如何快速融入团队?
#
13996次浏览
168人参与
#
和同事相处最忌讳的是__
#
19637次浏览
200人参与
#
去年你投递实习了吗?
#
22807次浏览
331人参与
#
你们的毕业论文什么进度了
#
1103656次浏览
9750人参与
#
产品每日一题
#
50149次浏览
588人参与
#
工作压力大怎么缓解
#
94630次浏览
1004人参与
#
机械人的金三校招总结
#
36064次浏览
461人参与
#
打工人的精神状态
#
70083次浏览
1134人参与
#
应届生应该先就业还是先择业
#
125531次浏览
698人参与
#
分享一个让你热爱工作的瞬间
#
32832次浏览
345人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务