Python自学周记(六)
这周学习了书上最后3个习题,制作简易的网站。
首先要安装 flask ,他是一个web框架,对初学者来说,首先要清楚框架这个概念:所谓框架,就是做某件事的基本结构,基本思路,它就像大楼的钢筋骨架一样,在钢筋骨架的基础上,安装墙体,地板,增加门窗装饰,能让工作变得容易高效。用书上的话说,就是“让某件事做起来更容易的安装包”。而web框架,就是让web开发更容易的安装包。
下一步就是要创建一个最基本的flask应用程序,这里会用到一个新的东西:@app.route(’/’),它是一个装饰器。什么是装饰器?装饰器只是一种接收函数(就是那个用“@”符号装饰的函数)的函数,并返回一个新的函数。当装饰一个函数时,就是告诉Python调用的是那个由装饰器返回的新函数,而不仅仅是直接返回原函数体的执行结果。这里的app是该文件的名字。
执行app.py,会看到这样的结果:
这个 http://127.0.0.1:5000/ 就是你所创建网址的用户名,把它复制到浏览器中打开,就能看到你预想的结果。但是它并不是一个网页,我们需要用HTML语言编写一个简易的响应页面。
在这里贴上web游戏程序中用到的HTML,做了相应的备注:
{% extends "layout.html" %}
{% block content %}
<hl>{{ room.name }} </hl> <!--房间名-->
<pre>
{{ room.description }}
</pre>
{% if room.name in ["death","The End"] %} <!--如果到了死亡的房间,则网页上显示:Play Again?-->
<p><a href="/">Play Again?</a></p>
{% else %} <!--如果没有死亡,则显示当前房间信息-->
<p>
<form action="/game" method="POST"> <!--列表格式-->
- <input type="text" name="action"> <input type="SUBMIT"> <!--需要输入的内容-->
- </form>
</p>
{% endif %}
{% endblock %}
给我的感觉,HTML像是给python中的信息规定了格式,一种在网页上必须遵守的排版规则。
结合创建网站的经过,学习web的工作原理:
通过python得到网站(你的服务器域名)之后,在浏览器上输入网址,然后浏览器通过网络接口传到互联网,再由互联网传到我的服务器。我的服务器接收请求之后,我编写的web应用程序就去处理这个请求,就是运行装饰器下面定义的内容。然后原路返回到浏览器,显示出结果。每次刷新网页,都会进行这样的一个循环。
最后的习题是编写一个web游戏,就是把之前习题43的游戏在网页上呈现出来,可以说是对前两个所学内容的巩固提升,书上要求把每个死亡的场景都编写出来,就是把每种死亡的情况放进不同的函数中,安装游戏规则返回这些函数,部分代码如下:
central_corridor_dodgedeath=Room("death",
"""
就像一个世界级的盒子,你躲闪,编织,滑动和当Gothon的冲击波
发出激光时,向右滑动过了你的脑袋。 在你巧妙的躲闪中间你的脚滑
了,你的头撞在金属上墙和传递出去。 你很快就醒来了,Gothon踩到
你的头并吃掉你。
""")
central_corridor.add_paths({
'shoot!':central_corridor_shootdeath,
'dodge!':central_corridor_dodgedeath,
'tell a joke':laser_weapon_armory
})
这里的 central_corridor_dodgedeath 函数就是对应输入 dodge! 的结果。
运行结果:
到此,笨办法学python3已通读一遍,习题也近乎完成,之后复习的同时也开始准备下一步的学习。