2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 一个python程序员需要掌握的知识-python初学者搭建网站需要了解的基础知识

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

时间:2022-07-05 13:53:16

相关推荐

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

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

废话不说,小编今天要分享如何快速搭建一个网站,当然还是用我最喜欢的语言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),传递两部分,一个是字典,一个是函数的引用(在服务器中定义的函数)。

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。