网站运维工作内容,企业网站建设 安全,公司网站文章的排版,做广告推广哪家好url-统一资源定位符-不同的url对应不同的资源 作为服务端#xff0c;url和视图函数的映射关系就是路由。
定义传递参数的方式#xff1a; 1.创建动态url
app.route(/login2/username/passwd)
def login2(username, passwd):if username url和视图函数的映射关系就是路由。
定义传递参数的方式 1.创建动态url
app.route(/login2/username/passwd)
def login2(username, passwd):if username root and passwd 123456:return flogin successelse:return flogin false2.url携带参数
记住传过来的东西都在我们flask的request对象这个对象不需要我们管flask框架已经给我们搞好了需要什么就用request的属性拿就好了
理解接口 and API登录为例 接口一般来说是两个程序使用的互相通信A程序暴露一个接口B程序调用即可。后端flask写好了接口前端一般不涉及数据库不能判断能否登陆成功nodejs也可以虽做后端只是不普遍所以前程调用后端的接口login接口把账号密码参数传递过来然后后端再去数据库里判断是否正确再去做一步操作并返回给前端登录是否成功。
接口文档 url请求方法传递参数返回结果
3.json 接收传递过来的json格式数据
from flask import Flask, request
app Flask(__name__)app.route(/login)
def login():print(request.json.get(username))print(request.json.get(password))return login htmlapp.run(debugTrue, host0.0.0.0, port9000)postman一功能怎么写程序发起这种请求
import requests
import jsonurl http://127.0.0.1:9000/login#字典-》json格式字符串
payload json.dumps({username: root,password: 123456
})
headers {Content-Type: application/json
}response requests.request(GET, url, headersheaders, datapayload)print(response.text)
4.form表单传递数据
from flask import Flask, request
app Flask(__name__)app.route(/login)
def login():print(request.form.get(username))print(request.form.get(password)return login htmlhtml语言一定是要有响应的所以不要忘记return html不然会报500状态的错误。
发送的请求可以有url携带参数http头部body一种方式data部分。
浏览器默认GET方法是不允许body数据传递而是一Headers传递全在url上 print(request.url) #整个路径print(request.path) #资源路径print(request.headers) #头部字段5.小练习登录注册功能 date: 2023/9/5
file: 登录注册功能
author: Jiangda
desc: testfrom flask import Flask, request
app Flask(__name__)user_dict {}
app.route(/register)
def register():username request.json.get(username)passwd request.json.get(passwd)re_passwd request.json.get(re_passwd)if not (username and passwd and re_passwd):return 参数传递不完整elif passwd ! re_passwd:return 注册密码不一致elif username in user_dict:return 用户已注册else:user_dict[username] passwdprint(fuser_dict is {user_dict})return register success!app.run(debugTrue, host0.0.0.0, port9000)拆分
入口文件 server.py 排查问题两大思路1.新增文件有没有运行。2.有没有绑定到核心对象app上
from app import create_app
sq_app create_app()
sq_app.run(host sq_app.config[HOST],port sq_app.config[PORT],debug sq_app.config[DEBUG])app.py 核心对象的设置和创建每一个核心对象是一个网站可以运行很多核心对象
import os
from flask import Flaskdef create_app():sq_app Flask(__name__)# 方式一从配置文件中读取# if isinstance(obj, str):# obj import_string(obj)# for key in dir(obj):# if key.isupper():# self[key] getattr(obj, key)sq_app.config.from_object(config.settings)# 方式二从环境变量中读取(好处根据不同的系统环境加载不同的配置文件)if FLASK_CONF in os.environ:sq_app.config.from_envvar(FLASK_CONF)return sq_app./config/settings.py
DEBUG True
HOST 0.0.0.0
PORT 9000蓝图 就像一个中间层方便管理路由 app – bp – 视图
视图先绑bpbp再去绑定app .route/__init__.py
from .view01 import view01_bpdef init_app(app):app.register_blueprint(view01_bp).route/view01.py
# 管理视图
from flask import Blueprintview01_bp Blueprint(view01, __name__, url_prefix/v1/)view01_bp.route(index)
def index():return this is indexapp.py 在crete_app()中添加 import routerrouter.init_app(sq_app) #将蓝图与app绑定综合登录注册拆分蓝图 server.py
from app import create_app
sq_app create_app()
sq_app.run(host sq_app.config[HOST],port sq_app.config[PORT],debug sq_app.config[DEBUG])app.py
import os
from flask import Flaskdef create_app():sq_app Flask(__name__)# 方式一从配置文件中读取sq_app.config.from_object(config.settings)# 方式二从环境变量中读取(好处根据不同的系统环境加载不同的配置文件)if FLASK_CONF in os.environ:sq_app.config.from_envvar(FLASK_CONF)import routerrouter.init_app(sq_app) #将蓝图与app绑定return sq_appconfig.settings.py
DEBUG True
HOST 0.0.0.0
PORT 9000# 全局变量
user_dict {}router/… __init__.py
from .login import login_bp
from .register import register_bpdef init_app(app):app.register_blueprint(login_bp)app.register_blueprint(register_bp)login.py
from flask import Blueprint, request
from config.settings import user_dictlogin_bp Blueprint(login_bp, __name__, url_prefix/v1)login_bp.route(login)
def login():user request.json.get(username)passwd request.json.get(passwd)local_user_passwd user_dict.get(user)if local_user_passwd and passwd local_user_passwd:return login success!return login failregister.py
from flask import Blueprint, request
from config.settings import user_dictregister_bp Blueprint(register_bp, __name__, url_prefix/v1)register_bp.route(register)
def register():username request.json.get(username)passwd request.json.get(passwd)re_passwd request.json.get(re_passwd)if not (username and passwd and re_passwd):return 参数传递不完整elif passwd ! re_passwd:return 注册密码不一致elif username in user_dict:return 用户已注册else:user_dict[username] passwdprint(fuser_dict is {user_dict})return register success!用postman的GET方法json数据格式按要求测试。