初识Flask

Flask -day01

特点

  -  短小精悍,可扩展性强的一个web框架。
  -  区别其他任何的框架做了一个上下文管理机制

wsgi

web服务网关接口,是一套协议,实现协议的模块是  
依赖wsgi: werkzurg

Flask安装

pip3 install flask

使用示例

示例一:
from werkzeug.wrappers import Request,Response
    @Request.application
    def hello(request):  # 注意一定要写一个request
        return Response('hello world')
    if __name__ == '__main__':
        from werkzeug.serving import run_simple
        run_simple('localhost', 4000, hello)
示例二:
    from werkzeug.wrappers import Request,Response
    from werkzeug.serving import run_simple

    def run(environ,start_response):
        return [b"hello world"]   # 其实和1没有区别
    if __name__ == '__main__':
        run_simple('localhost', 4000, run)

学习flask

	# 引入flask,flask是一个类
    from flask import Flask
    # 实例化一个类
    # app = Flask('afdsfad')   # 可以传入任何一个字符串,只是给对象起一个名字
    # print(app)
    app = Flask(__name__)  # 这样子写了以后当被导入的时候就是name,当前就是main
    @app.route('/index')  # 路由与视图函数对应
    def index():  # 没有参数
        return 'Hello World'
    # # 启动flask  run就会直接夯住请求了
    # app.run() 
    # 直接基于上面的方式书写的话,在被导入的时候也会执行,但是作为主函数不应该被执行,所以
    if __name__ == '__main__':
        app.run()

通过登录功能学习flask

视图函数

from flask import Flask, render_template, request,redirect

# app = Flask(__name__,template_folder=)   # 默认是templates
app = Flask(__name__)
@app.route('/login',methods=['GET','POST'])  # method默认是GET
def login():
    # 特殊的点---请求的东西不是通过参数拿的
    # 需要导入request,通过这个来拿到请求方法
    if request.method == 'GET':
        # return 'Login' ==> HttpResponse
        return render_template('login.html')
    # request.form  # GET  通过form表单提交过来的数据
    # request.args  # POST  通过url传过来的参数
    user = request.form.get('user')
    pwd = request.form.get('password')
    if user == 'mcc' and pwd == '123':
        return redirect('/index')
    # 模板渲染的功能
    # return render_template('login.html', error='用户名或者密码错误')
    return render_template('login.html', **{'error' : '用户名或者密码错误'})

@app.route('/index')
def index():
    # return '欢迎登录'
    return render_template('index.html')

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

前端页面的搭建

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>用户登录</h1>
<form method="post">
    用户名<input type="text" name="user">
    密码<input type="password" name="password">
    <input type="submit" value="提交">{{error}}
</form>
</body>
</html>

思考:我们可以将templates文件修改吗?django中可以修改此名称吗?

我们可以修改这个路径的名称,只需要指定一下参数就好app = Flask(name,template_folder=) # 默认是templates,将这个东西修改了我们的名字也就变了,django也可以改,配置文件修改一下就好。

模板语法补充

	模板语法中后缀名无所谓,其实本质上都是字符串,只不过是长得像HTML,不管任何语言和框架都一样,只不过写其他的东西不提示,所以我们默认就写html结尾

登录页面的路由跳转

    <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>Title</title>
        </head>
        <body>
        <h1>欢迎登录</h1>
        <img src="/static/1.jpeg" alt="">   # 我们在这里将名字改了之后发现图片不显示,所以和static的路径无关,是根据static_folder来指定的
        # 前端的前缀是可以修改的,我们可以让他叫任意的名字,那么我们就得通过修改static_url_path=/名字
        </body>
    </html>

配置文件的相关信息

	def __init__(
        self,
        import_name,  # __name__
        static_url_path=None,  # 就是他,只需要指定这个就好   /前缀名字
        static_folder="static",  # 静态文件的配置,一般情况下都叫static,但是可以通过设置指定
        static_host=None,
        host_matching=False,
        subdomain_matching=False,
        template_folder="templates",  # 模板语法
        instance_path=None,
        instance_relative_config=False,
        root_path=None,
    ): 

总结:

​ 所以如果要修改静态文件和模板文件夹的名字,你只需要在Flask(name)中指定相应的参数就好

posted @ 2019-08-25 19:13  mcc61  阅读(141)  评论(0编辑  收藏  举报