3.1.3 Python简单网站实践1

下面做一个简单的,可以说是简陋的网站,来实践一下;但是网站的主要元素都会涉及,过此动手,能够了解网站的开发基本结构和内容,并且对前面的知识可以有综合应用。
1,基本结构
可以用下图来概括:

a)前端
在网站中,所谓前端就是指用浏览器打开之后看到的那部分,它呈现网站传过来的信息的界面,也是用户和网站之间进行信息交互的界面。一般使用HTML/CSS/JS?JQuery来实现,当然你用别的形式也行,但是可能后期维护困难一些罢了。
在网站开发中,常常要求遵守 MVC这种软件架构模式。
MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分: 模型(Model)视图(View)控制器(Controller)
MVC模式的目的是实现一种动态的程式设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。
控制器( Controller):负责转发请求,对请求进行处理。
视图( View):界面设计人员进行图形界面设计。
模型( Model):程序员编写程序应有的功能(实现算法等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。
一般我们说得前端,也就对应的视图(View)部分。
前端所实现的功能主要有:
呈现内容。这些内容是根据URL,由后端从数据库中提取出来的,发送给前端,然后前端将其按照一定的样式呈现出来。另外,有一些内容不是后端数据库提供的,是写在前端的。
用户与网站交互。比如用户登录,这是很多网站都有的功能,当用户在指定的输入框中输入信息之后,该信息就是被前端提交给后端,后端对这个信息进行处理,一般情况下都要再反馈给前端一个处理结果,然后前端呈现给用户。
b)后端
后端对应着MVC中的Controller和Model的部分或者全部功能,“后端”是一个狭隘的概念,没有把数据库放在其内。
说白了,后端就是用Python写的程序,主要任务是根据需要处理由前端发过来的各种请求,然后根据逻辑流程操作数据库(对数据库进行增删改查),或者把请求的处理结果反馈给前端,还可能二者兼有之。
c)数据库
这个就很清楚了,面对后端的Python程序,进行增删改查的操作。
2,基本框架
在真正的工程开发中,不会像前面只显示一行字的网站那样,把所有的东西都写到一个文件中;如果那样后期的维护工作就会很麻烦,不利于多人开发;所以需要一个基本框架,开发就在这个基本框架中进行。
基本框架的结构:建立一个文件夹,文件夹里有很多目录和文件
按照基本结构(这个可以根据自己的喜好自定义,不一定非要我这样),我建好的架构是这样的:

handlers:我准备在这个文件夹中放后端python程序,主要处理来自前端的请求,并且操作数据库。

methods:这里准备放一些函数或者类,比如用得最多的读写数据库的函数,这些函数被handlers里面的程序使用。

statics:这里准备放一些静态文件,比如图片、css和JavaScript文件等。
templates:这里放模板文件,都以html为扩展名,它们将直接面对用户。
三个Python文件功能已经熟悉,在这只是分开展示:
a) url.py
#!/usr/bin/env python
# coding=utf-8
'''
Created on 2018年4月18日
这是网站的url结构
'''
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
from handlers.index import IndexHandler

url = [
(r'/',IndexHandler),
]
url.py文件主要设置网站的目录结构。
from handlers.index import IndexHandler,虽然在handlers文件夹还没有什么东西,为了演示如何建立网站的目录结构,假设在handlers文件夹里面已经有了一个文件index.py,它里面还有一个类IndexHandler。在url.py文件中,将其引用过来。
变量URL指向一个列表,在列表中列出所有目录和对应的处理类。比如(r'/',IndexHandler),就是约定网站根目录的处理类是IndexHandler,即来自这个目录的get()或者post()请求,均有IndexHandler类中相应的方法来处理。
如果还有别的目录,一样往后添加。
b) application.py
#!/usr/bin/env python
# coding=utf-8
'''
Created on 2018年4月18日
'''
from url import url
import tornado.web
import os

settings = dict(
template_path = os.path.join(os.path.dirname(__file__),"templates") ,
static_path = os.path.join(os.path.dirname(__file__),"statics")
)
application = tornado.web.Application(
handlers = url,
**settings
)
application.py这个文件完成了对网站系统的基本配置,建立网站的请求处理集合。
from url import url是将url.py中设定的目录引用过来。
setting引用了一个字典对象,里面约定了模板和静态文件的路径,即声明已经建立的文件夹“templates”和“statics”分别为模板目录和静态文件目录。
接下来application就是一个请求处理集合对象。
tornado.web.Application()的参数设置:
tornado.web.Application(handlers=None, default_host='', transforms=None, **settings)
settings的设置,不仅仅是文件中的两个参数,还可以有其他,比如,如果填上debug=True就表示处于调试模式。
c) server.py
#!/usr/bin/env python
# coding=utf-8
'''
Created on 2018年4月18日
'''
import tornado.ioloop
import tornado.options
import tornado.httpserver

from application import application
from tornado.options import define,options

define("port", default = 8000, help = "run on the given port", type = int)
def main():
tornado.options.parse_command_line()
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(options.port)
print "访问地址:http://127.0.0.1:%s" % options.port
print "退出服务: Ctrl-C"
tornado.ioloop.IOLoop.instance().start()
if __name__ == "__main__":
main()
这些就是完成了网站架构的搭建
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值