一 .Flask介绍和基本使用

眉间皱痕 提交于 2020-01-27 07:51:27

一 .Flask初步使用

1.Flask简介

Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。
werkzeug简介

Werkzeug是一个WSGI工具包,他可以作为一个Web框架的底层库。这里稍微说一下, werkzeug 不是一个web服务器,也不是一个web框架,而是一个工具包,官方的介绍说是一个 WSGI 工具包,它可以作为一个 Web 框架的底层库,因为它封装好了很多 Web 框架的东西,例如 Request,Response 等等
flask 特点  1.  短小精悍 可扩展性强  的一个web框架 2. 上下文管理机制 3. 依赖wsgi :werkzurg

 2. werkzurg学习(注意下载flask就带这个模块 了解)

示例1:from werkzeug.wrappers import Request, Response
from werkzeug.serving import run_simple

def run(environ,start_response):

    return [b"11111"]

if __name__ == '__main__':

    run_simple('localhost', 4000, run)
实例2:from  werkzeug.wrappers  import Request,Response
@Request.application
def myhello (request):
    return  Response("欢迎啊哈哈哈哈")


if __name__ == '__main__':
  from werkzeug.serving import run_simple
  run_simple("localhost",4000,myhello)
对类的巩固class Pro():
    def __init__(self,aa,bb):
           self.cc=aa
           self.dd=bb
           print(self.cc)


    def __call__(self, *args, **kwargs):
           print(2)



aa=Pro(11,22)     类实例化对象会调用__init__方法
aa()              对象加括号 会执行__call__方法


# 11
# 2

 

 3. Flask基本使用

 Flask 默认初始化属性   def __init__(
        self,
        import_name,
        static_url_path=None,
        static_folder="static",
        static_host=None,
        host_matching=False,
        subdomain_matching=False,
        template_folder="templates",
        instance_path=None,
        instance_relative_config=False,
        root_path=None,
    ):
示例1:from  flask import Flask
app=Flask(__name__)
@app.route("/")    #  这是根路由
# @app.route("/index/")
def myapp():
     return "哈哈哈哈哈哈哈"

if __name__ == '__main__':
   app.run()
from  flask import Flaskapp=Flask(__name__)# @app.route("/")    #  这是根路由@app.route("/index/")def myapp():     return "哈哈哈哈哈哈哈"if __name__ == '__main__':   app.run()

 

4. Flask基本使用(登录页面)

 示例1:

flask from  flask import Flask,render_template,request
app=Flask(__name__)
@app.route("/")
def myapp():

    return render_template("login.html")  #  注意这里需要自己创建 模板templates    render_template:是指渲染模块  这个模板后缀可以不是html
   # request.args :表示get请求  这里默认是get请求
   # request.form :表示post请求


if __name__ == '__main__':
   app.run()

templates 模板
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>欢迎来到登录页面哈哈哈哈</h1>
<form method="post">
<p>用户: <input type="text"></p>

<p>密码: <input type="password"></p>
    <p>用户: <input type="submit" value="登录"></p>
</form>

</body>
</html>

  

示例2:

flask主启动程序from  flask import Flask,render_template,request,redirect,session
#app=Flask(__name__,template_folder="templates",static_folder="static")
app=Flask(__name__)
# template_folder=""   注意可以指定 目标目录  默认是templatse
# static_folder=""   注意可以指定静态目录    默认是static
# static_url_path=""     注意可以指定静态 路径 别名        static_url_path="/vvvv"


app.secret_key="aswdasdsad"  # 注意在设置session时要给一个随机字符串  相当于md5加盐 不然会报错 如下:# RuntimeError: The session is unavailable because no secret key was set.  Set the secret_key on the application to something unique and secret.

@app.route("/login/",methods=["GET","POST"])
def myapp():
  if request.method=="GET":
     return render_template("login.html")  #  默认是get请求
  user=request.form.get("user")
  pwd= request.form.get("pwd")
  print(user,pwd,"这是获取值")
  if user=="aaa" and pwd=="111":
         session["username"]=user  # 设置session
          # return  "登录成功了哈哈哈"
         return  redirect("/index/")
  return  render_template("login.html",error="你的用户密码错误了哈哈哈哈")   # 方法一传参数 单个形式
  # return render_template("login.html", **{"error":"你的用户密码错误了哈哈哈哈"})  # 方法二传参数 字典形式


@app.route("/index/")
def index():
    user=session.get("username")    #获取session值
    if not user:
        return redirect("/login/")
    return render_template("index.html")

if __name__ == '__main__':
      app.run()  
login.html 登录页<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>欢迎来到登录页面哈哈哈哈</h1>
<form method="post">
<p>用户: <input type="text" name="user"></p>

<p>密码: <input type="password" name="pwd"></p>
    <p>用户: <input type="submit" value="登录"></p>
        <p>{{error}}</p>

</form>

<img src="/static/22.png" style="height:200px; width: 200px">

</body>
</html>
index.html 登录成功跳转页面<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>欢迎来到主页啊哈哈哈哈哇企鹅请问请问请问请问请问</h1>
</body>
</html>

 

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!