Python学习之路—2018/6/15

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进行访问

猜你喜欢

转载自www.cnblogs.com/ExBurner/p/9187737.html