首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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-24 19:44
苏州大学 集成电路IC设计
强行上台
不知道大家是否还记得性教育这么通识课程,一个大教室里面几百个人,我当时是听说这门课很水,绩点比较高,报的这门课,谁知道最后有个男女混合上台做活动,几百上千个人里面,竟然抽中了我,直接让微内的我裂开,玩的活动还非常尴尬,前人搭着后人跳兔子舞,能想象吗,在几百人面前的台子上,就老师在那指挥,下面全是沉默,给点反应互动也不至于这么尴尬,大学反正都管自己玩游戏,谁还真上课啊。
校园里的破防时刻
点赞
评论
收藏
分享
07-24 15:26
门头沟学院 前端工程师
蔚来好快啊!
看了JD我信心满满改简历,不到一天蔚来就发来感谢信生怕发晚了我就要入职了😂
投递蔚来等公司7个岗位
点赞
评论
收藏
分享
07-02 16:58
长春工业大学 Java
真的吗?我在牛客上看到有说kpi的
机械打工仔:
有说的你怀疑一下就行了,直接问也太实诚了
点赞
评论
收藏
分享
07-25 18:15
门头沟学院 前端工程师
26届校招提前批影石insta 360
投递岗位不透露了,直接投递等笔试了,最多可以投三个
投递影石Insta360等公司7个岗位
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
都是 dirty work,为什么别人的简历上就能言之有物🤔
1.5W
2
...
百度提前批一面(秋招第一场也估计是压力最大的)
9531
3
...
秋招首凉-腾讯TEG 云架构平台提前批
5642
4
...
【07.29更新】能救一个是一个!26届毁意向毁约裁员黑名单
3999
5
...
团孝子启动ing!
3771
6
...
干活最少的实习生因为长得漂亮转正了
3222
7
...
字节懂车帝 后端实习一面
3148
8
...
虾皮后端一面(已挂)
2878
9
...
令人心动的offer!!!
2606
10
...
26滴滴秋招提前批Java一面
2519
创作者周榜
更多
正在热议
更多
#
你遇到最难的面试题目是_
#
8191次浏览
115人参与
#
工作压力大怎么缓解
#
94066次浏览
994人参与
#
中兴秋招
#
197096次浏览
2208人参与
#
工作中哪个瞬间让你想离职
#
52246次浏览
460人参与
#
分享一个让你热爱工作的瞬间
#
32336次浏览
336人参与
#
你最讨厌面试问你什么?
#
15824次浏览
200人参与
#
腾讯大前端岗位热招中
#
35次浏览
1人参与
#
26届的你,投了哪些公司?
#
22316次浏览
270人参与
#
我对___祛魅了
#
32657次浏览
307人参与
#
简历上的经历如何包装
#
14514次浏览
505人参与
#
你跟室友的关系怎么样?
#
4208次浏览
75人参与
#
多益网络求职进展汇总
#
31451次浏览
139人参与
#
如何快速融入团队?
#
11725次浏览
142人参与
#
和同事相处最忌讳的是__
#
15880次浏览
160人参与
#
什么样的背景能拿SSP?
#
17382次浏览
134人参与
#
秋招前后对offer的期望对比
#
302515次浏览
2223人参与
#
打工人的精神状态
#
68339次浏览
1115人参与
#
饿了么求职进展汇总
#
64258次浏览
636人参与
#
我和mentor的爱恨情仇
#
62090次浏览
379人参与
#
实习生活中那些难忘的瞬间
#
165414次浏览
2457人参与
#
元戎启行求职进展汇总
#
36314次浏览
278人参与
#
牛友们的论文几号送审
#
48668次浏览
792人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务