Python学习之路—2018/6/15
1.DIY一个web框架
- main.py 程序入口,封装了socket
- urls.py 路径与视图函数的映射关系
- views.py 视图函数
- templates文件夹 html文件
main.py
from wsgiref.simple_server import make_server
import os
from urls import Urls
def application(environ, start_response):
flag = True
path = environ.get("PATH_INFO")
start_response("200 OK", [('Content-Type', 'text/html; charset=utf-8')])
for i in Urls:
if path == i[0]:
data = i[1](environ)
return [data]
else:
flag = False
if not flag:
return ["<h1>人未烬杯莫停</h1>".encode("utf8")]
httpd = make_server("", 7877, application)
httpd.serve_forever()
urls.py
from views import *
Urls = (["/login", login],
["/index", index],
["/favicon.ico", favicon])
views.py
def website(webname):
file = "./templates/%s" % webname
with open(file, "rb") as f:
data = f.read()
return data
def login(environ):
return website("login.html")
def index(environ):
return website("index.html")
def favicon(environ):
return website("favicon.ico")
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Hello World</h1>
<img src="https://gss3.bdstatic.com/-Po3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike150%2C5%2C5%2C150%2C50/sign=a102dc900f24ab18f41be96554938da8/8b82b9014a90f60380e9a5f13f12b31bb051ed2f.jpg">
</body>
</html>
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post">
用户名<input type="text" name="useranme">
密码<input type="password" name="password">
<input type="submit">
</form>
</body>
</html>
2.关于数据库的操作
views.py 增加auth()方法
def auth(request):
if request.get("REQUEST_METHOD") == "POST":
try:
request_body_size = int(request.get('CONTENT_LENGTH', 0))
except (ValueError):
request_body_size = 0
request_body = request['wsgi.input'].read(request_body_size)
data = parse_qs(request_body)
username = data.get(b"username")[0].decode("utf8")
password = data.get(b"password")[0].decode("utf8")
# 连接数据库
conn = pymysql.connect(
host="localhost",
port=3306,
user="root",
password="admin",
db="web",
charset="utf8"
)
# 创建游标
cur = conn.cursor()
SQL = "select * from user WHERE username ='%s' AND password ='%s'" % (username, password)
cur.execute(SQL)
if cur.fetchone():
return website("index.html")
else:
return "用户名或者密码错误".encode("utf8")
else:
return website("login.html")
3.初识Django
MTV模型
- M(Model)代表模型:负责业务对象和数据库的关系映射
- T(Template)代表模板:负责将页面展示给用户
- V(View)代表视图:负责业务逻辑,在适当时候调用Model和Template
MTV响应模式如下图所示:
安装Django
1.通过pip命令
pip3 install django # django==(版本号) 可下载对应的版本
pip3 install -i http://pypi.doubanio.com/simple django # 豆瓣源
2.下载压缩包进行安装
Django官方网址:https://www.djangoproject.com/download/
下载 Django 压缩包,解压并和Python安装目录放在同一个根目录,进入 Django 目录,执行python setup.py install,然后开始安装,Django将要被安装到Python的Lib下site-packages。
输入以下命令进行检查:
import django
django.get_version()
输出版本号则安装成功
创建第一个Django项目
django-admin.py startproject HelloWorld
django-admin startproject HelloWorld # 最新版Django使用此条命令
创建成功后会生成如下目录结构
- setting.py:主要包括Django项目的设置/配置,数据库信息等其他工作变量
- urls.py:负责把url模式映射到应用程序
- wsgi.py:封装了socket请求
- manage.py:主要包括Django项目的工具,可以通过它调用django shell和数据库等等。
在HelloWorld目录下创建应用
python manage.py startapp blog
启动Django
python manage.py runserver 8080
接下来在浏览器中输入http://127.0.0.1:8080进行访问