网站设计总结(Python实用案例编程入门)

本章的主题为创建一个自己的个人网站。17.1 要解决什么问题在互联网上存在着难以计数的网站,有企业的,政府的,各类组织及个人网站的等待,那么我们能否给自己建立一个网站呢?这当然肯定是没问题的,搭建个人网站有很多选择。我们既然在学Python,那么就利用Python的Django来为我们自己建立一个网站。当然了,网站和网站之间的差异也很大。比如新闻类的网站,可能只是提供了很多页面用于展示新闻信息,而一些订火车票订机票类的网站,就需要比较复杂的技术。而个人网站,大多就是用几个页面来展示一些信息。17.2 实现思路要搭建一个个人网站,我们需要做哪些工作呢? 需要先给自己申请一个域名,可以搜索域名注册,可以找到很多提供域名申请的网站; 需要一个有公网IP地址的服务器,可以购买一个云主机,也可以自己在家里搭建一个; 在买域名的时候一般都会免费赠送域名解析,这里可以将服务器的公网ip地址和域名进行绑定,这样在通过域名访问时就会被DNS解析; 接下来就需要利用Django创建自己的网站工程,并调试到可以运行; 将网站部署到我们第二步的服务器上; 通过申请的域名进行访问,来确认是否网站部署成功; 通过Tornado来建立一个简单的WEB服务器;17.3 相关模块的安装及介绍本节将会本章涉及到的相关模块。17.3.1 Django模块Django是一个Python实现的开源Web服务器框架,提供了基本视图,模型和模板。基于该框架,我们可以很容易的构建一个网站应用。相对于下节将要提到的Tornado来说,Django是一个重量级的Web服务器框架,功能非常全面,有利于开发复杂的网站。模型提供了对应用数据结构的抽象,而视图用于处理一个用户的请求,并返回响应。模板则提供了一个设计友好的render语法,用于向用户显示信息。可以通过pip命令进行安装。pip install django如果想要更深入的学习了解,可以通过下面的链接。17.3.2 Tornado模块Tornado是一个当前比较流行的开源Web服务器框架,其优势在于实现了一个非阻塞式服务框架。其底层实现是基于C语言的epoll技术,因此性能极好。在一些大型在线游戏中,也使用该框架进行游戏服务器端开发,因此在性能方面完全支持企业级应用。可以通过pip命令进行安装,安装命令如下。pip install tornado这里有一个基于Tornado实现的,简单的"Hello world"的web例子。import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")

def make_app():
return tornado.web.Application([
(r"/", MainHandler),
])

if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()更多关于Tornado模块的详细信息可以参考下面的链接。17.4 代码实现到这里,我们开始具体实现我们自己的个人网站了。17.4.1 通过Django来创建网站我们这里通过Pycharm IDE来创建Django工程,如果没有安装Pycharm也可以通过命令行进行创建,稍后会进行介绍。通过File->New Project,我们可以看到如下所示的界面。图17-1 创建Django工程创建成功后,我们可以看到如下图17-2所示的界面,左侧是工程目录,可以看到有一个django_sites目录,在该目录有两个子目录django_sites和person_web,在django_sites目录下分别是settings.py负责项目配置,urls.py路由模块和wsgi.py网络通信模块。person_web子目录下分别是admin.py负责用户权限,models负责数据模型,views.py负责业务逻辑。另外还有一个sqlite3的数据库文件db.sqlite3,一个manage.py文件。图17-2 Django工程接下来,我们需要进入工程目录,然后执行下面的命令,对数据存储服务进行初始化。>cd django_sites
django_sites>python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial… OK
Applying auth.0001_initial… OK
Applying admin.0001_initial… OK
Applying admin.0002_logentry_remove_auto_add… OK
Applying admin.0003_logentry_add_action_flag_choices… OK
Applying contenttypes.0002_remove_content_type_name… OK
Applying auth.0002_alter_permission_name_max_length… OK
Applying auth.0003_alter_user_email_max_length… OK
Applying auth.0004_alter_user_username_opts… OK
Applying auth.0005_alter_user_last_login_null… OK
Applying auth.0006_require_contenttypes_0002… OK
Applying auth.0007_alter_validators_add_error_messages… OK
Applying auth.0008_alter_user_username_max_length… OK
Applying auth.0009_alter_user_last_name_max_length… OK
Applying auth.0010_alter_group_name_max_length… OK
Applying auth.0011_update_proxy_permissions… OK
Applying sessions.0001_initial… OK到这里,万事俱备只欠东风,通过下面的命令我们可以运行该django server了。python manage.py runserver执行上面命令后,将会启动Django server。在浏览器中输入http://127.0.0.1:8000/可以打开如下图17-3所示的界面,表示Django已经可以正常运行。图17-3 Django Debug模式界面当然了,我们也可以完全通过命令行进行上面的操作,大致过程如下。输入如下指令,创建一个Django项目django_sites。django-admin startproject django_sites执行成功后,进入django_sites目录,通过下面的命令对数据存储服务进行初始化。python manage.py migrate紧接着,输入如下指令启动服务器。python manage.py runserver下面就可以通过浏览器进行访问了,但这仅仅是让Django服务运行起来了,我们还需要实现自己的页面。在开始使用自己定义的主页前,需要将settings.py文件中的DEBUG修改为False,并且需要在ALLOWED_HOSTS中添加运行访问的主机IP地址,如下所示,0.0.0.0表示运行任何主机访问。
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

ALLOWED_HOSTS = ["0.0.0.0"]17.4.2 通过Tornado来创建网站本节我们介绍如何通过Tornado来创建网站, 代码结构比Django简单的多,个人更喜欢Tornado来实现网站。下面代码段展示了如何实现一个http服务器端,后面紧接着会展示如何实现一个https服务器端。# -*- coding=utf-8 -*-

import os

from tornado import gen, web
from tornado import httpserver
from tornado import ioloop

class MainHandler(web.RequestHandler):
def data_received(self, chunk):
pass

@gen.coroutine
def get(self):
self.render("login.html")

@gen.coroutine
def post(self):
print(self.request)
print(self.request.remote_ip)
print(self.get_argument('user'))
print(self.get_argument('password'))
self.render("success.html")
pass

def main():
settings = {
"static_path": os.path.join(os.path.dirname(__file__), "static"),
}
application = web.Application([(r"/", MainHandler), ], autoreload=True, **settings)
server = httpserver.HTTPServer(application)
server.listen(8000)
ioloop.IOLoop.instance().start()

if __name__ == '__main__':
main()

下面的服务器端支持https,因此需要证书文件。
# -*- coding=utf-8 -*-

import os

from tornado import gen, web
from tornado import httpserver
from tornado import ioloop

class MainHandler(web.RequestHandler):
def data_received(self, chunk):
pass

@gen.coroutine
def get(self):
self.render("login.html")

@gen.coroutine
def post(self):
print(self.request)
print(self.request.remote_ip)
print(self.get_argument('user'))
print(self.get_argument('password'))
self.render("success.html")
pass

def main():
settings = {
"static_path": os.path.join(os.path.dirname(__file__), "static"),
}
application = web.Application([(r"/", MainHandler), ], autoreload=True, **settings)
server = httpserver.HTTPServer(application, ssl_options={
"certfile": os.path.join(os.path.abspath("."), "server.crt"),
"keyfile": os.path.join(os.path.abspath("."), "server.key"),
})
server.listen(8000)
ioloop.IOLoop.instance().start()

if __name__ == '__main__':
main()
启动该代码后,我们可以通过浏览器进行访问,会得到如图17-4所示界面,可以看到是一个简单的登陆界面,需要输入用户名和密码。这里,我们随便输入一个用户名和密码,会得到如图17-5所示界面,显示登陆成功。接下来,我们可以看看登陆页面的代码。图17-4 Tornado实现的登陆界面图17-5 Tornado登陆界面的响应从上面服务器端的代码实现,我们可以知道,get()方法只是简单的显示login.html页面,而post()方法则是打印访问的远端IP地址和用户输入的用户名密码后,直接显示success.html页面。login.html页面的代码实现如下所示。<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Welcome to Yonggang Liu's Website</title>
<link rel="icon" href="images/logo.ico" type="image/x-icon"/>
<script></script>
</head>
<body>
<form name="input" action="/" method="post">
UserName <input name="user" type="text">
Password <input name="password" type="password">
<button type="submit">Login</button>
</form>
</body>
</html>
success.html页面的代码如下所示。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Welcome to Yonggang Liu's Website</title>
<link rel="icon" href="images/logo.ico" type="image/x-icon"/>
<script></script>
</head>
<body>
Successed login
</body>
</html>17.5 本章小结本章介绍了两种途径来建立自己的个人网站,两种方法只是介绍了如何搭起一个基本框架,两种框架都具备支持企业级业务。因此,我们实现一个个人网站就不在话下。当然这里的介绍相对比较简单,只是让我们能够搭建起服务器端,并看到一个简单的首页。我们自己实现的时候,需要丰富页面内容,增加相应的功能。欢迎关注,点赞,转发,收藏


本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://www.xiaosb.com/beian/43445/