python在不用框架的情况下如何写网站后台
回复内容:
python标准库中的basehttpserver适合你,阅读下源码你就知道了
Django的翻译文档有这么一段话:
如果你曾编写过网络应用程序。 那么你很有可能熟悉之前我们的 CGI 例子。
从头开始编写网络应用程序。
从头编写另一个网络应用程序。
从第一步中总结(找出其中通用的代码),并运用在第二步中。
重构代码使得能在第 2 个程序中使用第 1 个程序中的通用代码。
重复 2-4 步骤若干次。
意识到你发明了一个框架。
这正是为什么 Django 建立的原因!
你不用框架最后还不是得实现框架,是吧。何必重复造轮子,当然如果是将马车升级为汽车,那就不是造轮子了。
可以去看看廖雪峰的教程,他就是自己实现的框架,还有例程很详细
推荐 Python教程 - 廖雪峰的官方网站
别说你不用框架的情况下读了这个能写,连还不懂 Python 读完都能写。
看看这个A Do-It-Yourself Framework
可以尝试使用 WSGI,类似 Java 的 servlet ,只是定义了一套框架与服务器交互的接口规范,参考 PEP 333 -- Python Web Server Gateway Interface v1.0
写出来最简单的应用是这样的:
<code class="language-python"><span class="k">def</span> <span class="nf">simple_app</span><span class="p">(</span><span class="n">environ</span><span class="p">,</span> <span class="n">start_response</span><span class="p">):</span>
<span class="n">status</span> <span class="o">=</span> <span class="s">'200 OK'</span>
<span class="n">response_headers</span> <span class="o">=</span> <span class="p">[(</span><span class="s">'Content-type'</span><span class="p">,</span> <span class="s">'text/plain'</span><span class="p">)]</span>
<span class="n">start_response</span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">response_headers</span><span class="p">)</span>
<span class="k">return</span> <span class="p">[</span><span class="s">'Hello world!</span><span class="se">\n</span><span class="s">'</span><span class="p">]</span>
</code>
Python自带CGI库,就叫cgi
写法类似几十年前的perl写网站。你需要自己处理session、cookie,以及URL routing。
性能也是不行的:每个http请求对应一次python脚本执行。
学习一下可以,不要自虐了。PHP可以这么干是因为PHP本身除了语言之外还有一个随语言自带的web framework(见过哪个语言有session_start类似的函数?)
flask、bottle、tornado这种微框架也不行么?
那werkzeug呢?
比如uwsgi+werkzeug+自己实现wsgi application
flask不就是包装werkzeug的wsgi application么
再加个按需指定的数据库模块、session模块什么的
werkzeug也嫌大的话,那需要实现的东西就有点多了吧,http解析、url解析、url route等等,那就有点划不来了吧
CGI?
实现wsgi即可,但。。。你真的不需要框架吗
怎么可能不用框架,早晚你都会自己写出一个框架
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn