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

  • 相关阅读:
    hdu 5151 Sit sit sit
    hdu 5150 Sit sit sit
    cf C. Arithmetic Progression
    hdu 5125 magic balls
    Pots(bfs)
    Prime Path(素数筛选+bfs)
    A Knight's Journey(dfs)
    Colored Sticks (字典树哈希+并查集+欧拉路)
    Squares(哈希)
    Gold Balanced Lineup(哈希表)
  • 原文地址:https://www.cnblogs.com/ExBurner/p/9187737.html
Copyright © 2020-2023  润新知