首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
滴滴
校招火热招聘中
官网直投
相关推荐
泥电第一华孝子
05-13 21:02
电子科技大学 计算机类
禾赛科技实习值得一去吗?
base重庆,岗位是C++相关的,具体做什么不知道,反问的时候面试官说的不是很清楚。图片源自同学()
点赞
评论
收藏
转发
大高佬
05-12 17:41
奇安信_信息安全工程师(准入职员工)
奇安信暑期实习内推
奇安信2025届暑期实习内推码【DS5mfqSV】4.22启动,米哈游,可转正!快来加入网安一哥!公司简介国资背景,科创板“网安一哥”,网络安全领域top1,新一代网络安全领军者!【招聘岗位】安全类、研发类、测试类、营销类、产品类、技术支持类【招聘对象】25届实习生奇安信内推码:DS5mfqSV奇安信内推码:DS5mfqSV奇安信内推码:DS5mfqSV(“虎符星计划”即暑期实习)【内推 | 推荐码】DS5mfqSV【直达内推投递页面】https://app.mokahr.com/campus_apply/qianxin/29182?recommendCode=DS5mfqSV#/jobs投递...
投递奇安信等公司10个岗位 >
点赞
评论
收藏
转发
随便找个班混日子
05-09 00:54
已编辑
前端工程师
唉,时代变了
#前端开发#前端#
点赞
评论
收藏
转发
听风与他
05-11 17:04
湖北师范大学 计算机类
鼠鼠拿到第一份offer啦!(0-1的突破)
虽然只是一个小公司java开发实习,一面就要鼠鼠了,坐标:浙江宁波,150一天,签三个月实习合同,但是学校不放人,要学院同意,书记签字,家长来签字,太麻烦了,流程,根本不想让家里人来瞎跑,只是一个小offer,真的很想去,但是学校天天查课,点名,数人头,emo了,拒了这个,五月尾,六月真不知道能不能找到实习啦!另外小米二面面完了,15号之前,一个星期内没打电话过来,就是G了。这是最接近大厂的一次面试。另外,七牛云笔试我快AK了都没有面试吗?阿里国际要约面鼠鼠了,不久后,有点害怕!最后还是决定拒了,再找找有没有title大一点的公司吧,再请假实习去。
点赞
评论
收藏
转发
点赞
收藏
评论
分享
回复帖子
全站热榜
1
...
5.16校招&实习招聘信息汇总
8585
2
...
阿里oc
5602
3
...
送花给牛友,不做“白嫖党”!牛客互动新功能上线啦!
5449
4
...
给25届同学: 永远相信美好的事情即将发生
5296
5
...
腾讯一面凉经 5.16
5178
6
...
CS硕 只看40w+且965 能投啥
4975
7
...
二本漫漫求职路......
3704
8
...
为什么选择做测试开发
3199
9
...
虎哥の致谢
3026
10
...
C++菜鸡的暑期实习总结(待补充)
2836
正在热议
#
牛客帮帮团来啦!有问必答
#
754406次浏览
11990人参与
#
海康威视求职进展汇总
#
95106次浏览
1147人参与
#
你的工作大概什么时候入职?
#
2999次浏览
42人参与
#
非技术2024笔面经
#
181137次浏览
3045人参与
#
非技术岗是怎么找实习的
#
75970次浏览
1419人参与
#
产品实习,你更倾向大公司or小公司
#
37586次浏览
579人参与
#
面试等了一周没回复,还有戏吗
#
41331次浏览
508人参与
#
春招已经启动啦 硬件uu开始投了吗?
#
86422次浏览
676人参与
#
今年形式下双非本找得到工作吗
#
7653次浏览
161人参与
#
浅聊一下我实习的辛苦费
#
82767次浏览
775人参与
#
学历对求职的影响
#
135059次浏览
1542人参与
#
如何看待offer收割机的行为
#
226322次浏览
3269人参与
#
百度工作体验
#
23972次浏览
248人参与
#
2022届毕业生现状
#
321253次浏览
4448人参与
#
0offer是寒冬太冷还是我太菜
#
418222次浏览
4841人参与
#
铜五铁六真的存在吗?
#
29206次浏览
302人参与
#
想实习转正,又想准备秋招,我该怎么办
#
112179次浏览
1258人参与
#
通信硬件人笔面经互助
#
115945次浏览
2298人参与
#
正在春招的你,也参与了去年秋招吗?
#
134541次浏览
1696人参与
#
荣耀求职进展汇总
#
66765次浏览
672人参与
牛客网
牛客企业服务