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)中指定相应的参数就好