2019年转瞬即逝,这一年无论爱情,职业都变化的太快,我现在还不敢相信一年已经接近尾声。从北京到深圳,未来可待~

废话不说,小编今天要分享如何快速搭建一个网站,当然还是用我最喜欢的语言python。

1.架构。主要包括四部分,从左到右依次是前端,服务器,用来处理各种业务的框架和数据库模块,下图所示:

前端以多种形式呈现包括,小程序,app,浏览器等,前端向后端请求数据,后端对请求的数据处理。这个过程主要遵循基于tcp的http协议,向后面的服务器发送request。简单说一下http的结构包括url+header+body;接着服务器和框架交互也是遵循WSGI协议的,服务器会带着request把需求抛给框架,也就是Django,Flask,Tornado;这帮小弟根据request完成数据库交互,校验,改变格式等然后response返回给服务器。框架中的ORM主要负责从数据库中获取request需要的数据。

再说一下ORM(Object Relationship Mapping),sql语言接触过吧,每次和数据库交互的时候什么select,insert,where还要控制字符形式是不是很不好记,最主要的是在开发的过程中不同的表字段不同,一旦发生改变就需要一遍一遍的修改表结构,python框架们把它们用类封装,不但语言更接近人类语言,而且在对于数据库进行操作的时候可以使用类的继承还有property,static等特性很好的简化代码。然而注意ORM也不是都好,封装不要时间啊,能不影响性能吗,所以论性能那当然原生sql更有优势。

2.主要的框架。目前基于python流行三种框架:Flask,Django和Ternado,对于一个python后端开发工程师其实主要就是对于框架的理解和运用。小编只用过Flask和Django,简单比较一下两者,欢迎交流补充。

Flask有两个常用的工具箱:Werkzeug和Janjia2模板,路由和密码设置在Werkzeug中,Janjia2利用render_template封装此模板引擎,拼接前端的数据,header+body。Flask是一种轻量级框架,相当于一个内核,对比于Django易于扩展,常用的包主要有Flask-sqlarchemy,Flask-session,Flask-script,Flask-migrate,Flask-WTF等分别对应数据库模型,session缓存设置,外置脚本导入,数据库迁移和表单应用。

Django 应该是最出名的Python框架,Django对比于Flask具有更高的耦合性,从开始创建project以及各种业务逻辑app,它就以简单快速高于Flask,比如创建一个app,python manager.py startapp app名称,Django会自己帮你创建好整块业务逻辑需要的.py文件包括views和models,Flask则最初是空空如也,需要手动创建的核心代码。其次Django封装ORM,原生表单,session缓存,后台管理系统,简单的url设置方式以及被Jinjia2参考的模板设计,这些都是Django自带封装,然而也是因为大而全,使得Django的扩展性和灵活性没有Flask出众。

3.了解两种框架的差异。来说说nginx等服务器和它们是怎么达成数据传输的一致性。目前公司搭建网站都是用已经很成熟的服务器,全球比较著名的像:nginx,Gunicern等,而现在比较有名的web框架是python写的比如:Flask,Django等。WSGI协议就是统一框架和服务器之间通信的。它描述了服务器在调用框架的时候,需要哪些数据,怎么调用,怎么传,传什么等问题。

浏览器向服务器request时候,服务器要response,header和body,框架的任务是把header和body加起来,return给服务器。如果response是静态的,也就是html直接read,如果是动态的比如从数据库中查询的,或者是爬虫爬到的,就需要运用框架。

简单来说想要遵循WSGI接口,web框架必须实现可以直接调用的函数application(env, start_response),传递两部分,一个是字典,一个是函数的引用(在服务器中定义的函数)。

好了,今天先分享这么多。

一个python程序员需要掌握的知识-python初学者搭建网站需要了解的基础知识相关推荐

  1. 北京python程序员求职_想找python程序员的工作,但发现稍微好点的职位都集中在北京。我非常想当python程序员,北京值得去吗?...

    想当Python程序员,北京值得去吗?你也知道北京的人口多.环境污染很严重,房价也高得离谱,交通拥挤.但每天照样有无数人从外地往北京跑,也有无数人从北京离开.所以,还是先来看看去北上广深一类大城市工作 ...

  2. Python程序员:8个接私活的网站,只要你有码,那“我”就有钱

    前言: "好马配好鞍,兵器不趁手"好马配上好的马鞍那是如虎添翼,兵器不趁手那是"江湖大忌"放在古时候与人过招时,一不留神会丢掉性命的,两者的区别可想而知!照这么 ...

  3. python程序员专用壁纸_043 用python写了一个壁纸切换的系统

    程序员换壁纸还是用程序比较好啊,谁让windows切换壁纸的功能那么的垃圾呢 功能如下,这是使用的功能1,初始使用的情况 欢迎使用壁纸切换系统 使用上次的文件夹路径请输入:1 在使用上次的文件夹路径的 ...

  4. python程序员需要掌握哪些技术-python运维要掌握哪些内容

    python运维需要会什么 随着移动互联网的普及,服务器运维所面临的挑战也随之越来越大.当规模增长到一定程度,手动管理方式已经无法应对,自动化运维成为解决问题的银弹. Python凭借其灵活性,在自动 ...

  5. Python程序员必读的一本书《Python编程导论》,豆瓣评分9.0以上

    本书特色 在这里还是要推荐下我自己建的Python开发学习群:483546416,群里都是学Python开发的,如果你正在学习Python ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有P ...

  6. python程序员月薪多少-据说做Python程序员,都月薪上万?

    2018年Python热度不减,一直占据编程语言排行榜的前几位.人生苦短,让我们来学一学python吧,找到一份找到一份高薪工作还是没有问题的. Python语言本身所具有的优势,决定了从事Pytho ...

  7. Python程序员难招人?月入30K程序员告诉你答案

    现在程序员的现状是什么样的?程序员有很多,好的Python程序员还是供不应求的.Python开发的工资一般多少?一般而言,Python程序员的收入水平不低.在一线城市,程序员的平均收入应该都能达到该市 ...

  8. 5大原因告诉你,Python程序员为何如此难招!

    现在程序员的现状是什么样的?程序员有很多,好的Python程序员还是供不应求的.Python开发的工资一般多少?一般而言,Python程序员的收入水平不低.在一线城市,程序员的平均收入应该都能达到该市 ...

  9. python绘制函数图像opengl3d_写给 python 程序员的 OpenGL 教程

    原标题:写给 python 程序员的 OpenGL 教程 作者:牧马人 (本文来自作者投稿) 1预备知识 OpenGL 是 Open Graphics Library 的简写,意为"开放式图 ...

最新文章

  1. 自然语言对话:未来发展的机遇在哪里?
  2. php字符串常用算法--字符串加密解密
  3. javaweb学习总结(六)——Servlet开发(二)
  4. [转]在ASP.NET中如何用C#.NET实现基于表单的验证(二)
  5. .net6给winform带来的新功能
  6. 给刚博士毕业的年轻学者9点建议,最后一条:抓紧结婚,生娃!
  7. 让0基础纯小白也能上手写Python,干货分享(二)
  8. Redis通过IO进行序列化+反序列化
  9. 精益创业实战 - 第3章 制作自己的精益画布
  10. 揭秘720°三维全景3D实景地图制作技术
  11. cs224n课后作业
  12. 【Cocos Creator实战教程(6)】——镜头跟随
  13. Vue3——Suspense组件
  14. Selenium版本与浏览器版本
  15. jquery按钮和回车键绑定
  16. 初学者学习深度学习,不得不会的Google Colab基本操作
  17. 2021计算机专业考研科目,2021年考研计算机考试科目
  18. 人脸识别开源项目--insightface
  19. 每日一面 - JVM 内存一般包括什么?
  20. Canvas 实现绘制图表

热门文章

  1. git上传超过100m大文件
  2. es6 Promise
  3. 20165328 预备作业3 Linux安装及命令
  4. OpenCV2.4.9 显示鼠标框选区域,其他部分全为零,鼠标创建ROI区域
  5. uva1471 二叉搜索树
  6. 数据库还原失败System.Data.SqlClient.SqlError: 无法执行 BACKUP LOG,因为当前没有数据库备份...
  7. linux 系统权限 数字含义
  8. 多无人机对组网雷达的协同干扰问题 数学建模
  9. 表格边框重复合并属性: border-collapse:collapse;
  10. Eclipse插件CheckStyle的安装和使用