{"id":17,"date":"2025-07-28T22:12:27","date_gmt":"2025-07-28T14:12:27","guid":{"rendered":"https:\/\/22z.top\/?p=17"},"modified":"2025-07-28T22:12:28","modified_gmt":"2025-07-28T14:12:28","slug":"flask%e5%b8%b8%e7%94%a8%e6%a8%a1%e5%9d%97","status":"publish","type":"post","link":"https:\/\/22z.top\/?p=17","title":{"rendered":"Flask\u5e38\u7528\u6a21\u5757"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Faker<\/h2>\n\n\n\n<p>\u6587\u6863: <a href=\"https:\/\/faker.readthedocs.io\/en\/master\/locales\/zh_CN.html\">https:\/\/faker.readthedocs.io\/en\/master\/locales\/zh_CN.html<\/a><\/p>\n\n\n\n<p>\u6279\u91cf\u751f\u6210\u6d4b\u8bd5\u6570\u636e: <a href=\"https:\/\/github.com\/joke2k\/faker\">https:\/\/github.com\/joke2k\/faker<\/a><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pip install faker -i https:\/\/pypi.douban.com\/simple<\/pre>\n\n\n\n<p>\u4ee3\u7801\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">from flask import Flask<br>from flask_sqlalchemy import SQLAlchemy<br>\u200b<br>app = Flask(__name__)<br>\u200b<br>class Config(object):<br> \u00a0 \u00a0DEBUG = True<br> \u00a0 \u00a0# \u6570\u636e\u5e93\u8fde\u63a5\u914d\u7f6e<br> \u00a0 \u00a0# SQLALCHEMY_DATABASE_URI = \"\u6570\u636e\u5e93\u7c7b\u578b:\/\/\u6570\u636e\u5e93\u8d26\u53f7:\u5bc6\u7801@\u6570\u636e\u5e93\u5730\u5740:\u7aef\u53e3\/\u6570\u636e\u5e93\u540d\u79f0?charset=utf8mb4\"<br> \u00a0 \u00a0SQLALCHEMY_DATABASE_URI = \"mysql:\/\/root:123@127.0.0.1:3306\/flaskdemo?charset=utf8mb4\"<br> \u00a0 \u00a0# \u52a8\u6001\u8ffd\u8e2a\u4fee\u6539\u8bbe\u7f6e\uff0c\u5982\u672a\u8bbe\u7f6e\u53ea\u4f1a\u63d0\u793a\u8b66\u544a<br> \u00a0 \u00a0SQLALCHEMY_TRACK_MODIFICATIONS = False<br> \u00a0 \u00a0# \u67e5\u8be2\u65f6\u4f1a\u663e\u793a\u539f\u59cbSQL\u8bed\u53e5<br> \u00a0 \u00a0SQLALCHEMY_ECHO = False<br>\u200b<br>app.config.from_object(Config)<br>\u200b<br>db = SQLAlchemy(app=app)<br>\u200b<br>class Student(db.Model):<br> \u00a0 \u00a0\"\"\"\u5b66\u751f\u4fe1\u606f\u6a21\u578b\"\"\"<br> \u00a0 \u00a0__tablename__ = \"db_student\"<br> \u00a0 \u00a0id = db.Column(db.Integer, primary_key=True,comment=\"\u4e3b\u952e\")<br> \u00a0 \u00a0name = db.Column(db.String(15), comment=\"\u59d3\u540d\")<br> \u00a0 \u00a0age = db.Column(db.SmallInteger, comment=\"\u5e74\u9f84\")<br> \u00a0 \u00a0sex = db.Column(db.Boolean, default=True, comment=\"\u6027\u522b\")<br> \u00a0 \u00a0email = db.Column(db.String(128), comment=\"\u90ae\u7bb1\u5730\u5740\")<br> \u00a0 \u00a0money = db.Column(db.Numeric(10,2), default=0.0, comment=\"\u94b1\u5305\")<br>\u200b<br> \u00a0 \u00a0def __repr__(self):<br> \u00a0 \u00a0 \u00a0 \u00a0return f\"{self.name}&lt;Student>\"<br>\u200b<br># \u81ea\u5b9a\u4e49\u6279\u91cf\u751f\u6210\u5b66\u751f<br>import random,click<br>from faker import Faker<br># \u81ea\u5b9a\u4e49\u7ec8\u7aef\u547d\u4ee4<br>@app.cli.command(\"faker_user\") \u00a0 \u00a0 # \u6307\u5b9a\u7ec8\u7aef\u547d\u4ee4\u7684\u8c03\u7528\u540d\u79f0<br>@click.argument(\"num\", default=5, type=int) \u00a0# \u547d\u4ee4\u7684\u9009\u9879<br>def faker_user_command(num):<br> \u00a0 \u00a0\"\"\"\u751f\u6210\u6d4b\u8bd5\u5b66\u751f\u4fe1\u606f\"\"\"<br> \u00a0 \u00a0faker = Faker(locale=\"ZH_CN\")<br> \u00a0 \u00a0for i in range(num):<br> \u00a0 \u00a0 \u00a0 \u00a0sex = bool( random.randint(0,1) )<br> \u00a0 \u00a0 \u00a0 \u00a0student = Student(<br> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0name= faker.name_male() if sex else faker.name_female(),<br> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0age=random.randint(15,60),<br> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0sex=sex,<br> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0email=faker.free_email(),<br> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0money= float( random.randint(100,100000) \/ 100 ),<br> \u00a0 \u00a0 \u00a0  )<br> \u00a0 \u00a0 \u00a0 \u00a0db.session.add(student)<br> \u00a0 \u00a0# \u5728\u5faa\u73af\u5916\u9762\u7edf\u4e00\u63d0\u4ea4<br> \u00a0 \u00a0db.session.commit()<br>\u200b<br>@app.route(\"\/\")<br>def index():<br> \u00a0 \u00a0return \"ok\"<br>\u200b<br>if __name__ == '__main__':<br> \u00a0 \u00a0with app.app_context():<br> \u00a0 \u00a0 \u00a0 \u00a0db.create_all()<br> \u00a0 \u00a0app.run()<br>\u200b<br>\u200b<br>\"\"\"<br>export FLASK_APP=manage.py<br>flask faker-user 10<br>\"\"\"<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">flask-session<\/h2>\n\n\n\n<p>flask-session\uff0c\u5141\u8bb8\u8bbe\u7f6esession\u5230\u6307\u5b9a\u7684\u5b58\u50a8\u7a7a\u95f4\u4e2d\uff0c\u4f8b\u5982\uff1aredis\/mongoDB\/mysql\u3002<\/p>\n\n\n\n<p>\u6587\u6863: <a href=\"https:\/\/flask-session.readthedocs.io\/en\/latest\/\">https:\/\/flask-session.readthedocs.io\/en\/latest\/<\/a><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pip install Flask-Session<\/pre>\n\n\n\n<p>\u4f7f\u7528session\u4e4b\u524d,\u5fc5\u987b\u914d\u7f6e\u4e00\u4e0b\u914d\u7f6e\u9879:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># session\u79d8\u94a5<br>app.config[\"SECRET_KEY\"] = \"*(%#4sxcz(^(#$#8423\"<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">SQLAlchemy\u5b58\u50a8session\u7684\u57fa\u672c\u914d\u7f6e<\/h3>\n\n\n\n<p>\u9700\u8981\u624b\u52a8\u521b\u5efasession\u8868\uff0c\u5728\u9879\u76ee\u7b2c\u4e00\u6b21\u542f\u52a8\u7684\u65f6\u5019\uff0c\u4f7f\u7528<code>db.create_all()<\/code>\u6765\u5b8c\u6210\u521b\u5efa\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">from flask import Flask<br>from flask_sqlalchemy import SQLAlchemy<br># \u5f15\u5165session\u5b58\u50a8\u9a71\u52a8\u7c7b<br>from flask_session import Session<br># \u5f15\u5165sessio\u64cd\u4f5c\u7c7b\uff0c\u6ce8\u610f\uff1a\u5f15\u5165\u8def\u5f84\u4e0d\u540c\uff0c\u5927\u5c0f\u5199\u4e0d\u540c\u7684\u3002<br>from flask import session<br>\u200b<br>app = Flask(__name__, template_folder=\"templates\", static_folder=\"static\")<br>\u200b<br>db = SQLAlchemy()<br>\u200b<br># \u5b9e\u4f8b\u5316session\u5b58\u50a8\u7c7b<br>session_store = Session()<br>\u200b<br># \u914d\u7f6e<br>app.config.update({<br> \u00a0 \u00a0\"DEBUG\": True,<br> \u00a0 \u00a0# \u4f7f\u7528session\u4e4b\u524d,\u5fc5\u987b\u914d\u7f6e\u4e00\u4e0b\u79d8\u94a5<br> \u00a0 \u00a0\"SECRET_KEY\": \"*(%#4sxcz(^(#$#8423\",<br>\u200b<br> \u00a0 \u00a0# \u8981\u628a\u5b58\u50a8\u5230SQLAlchemy\uff0c\u5fc5\u987b\u914d\u7f6e\u6570\u636e\u5e93\u8fde\u63a5<br> \u00a0 \u00a0# \"SQLALCHEMY_DATABASE_URI\": \"\u6570\u636e\u5e93\u7c7b\u578b:\/\/\u6570\u636e\u5e93\u8d26\u53f7:\u5bc6\u7801@\u6570\u636e\u5e93\u5730\u5740:\u7aef\u53e3\/\u6570\u636e\u5e93\u540d\u79f0?charset=utf8mb4\"<br> \u00a0 \u00a0\"SQLALCHEMY_DATABASE_URI\": \"mysql:\/\/root:123@127.0.0.1:3306\/flaskdemo?charset=utf8mb4\",<br> \u00a0 \u00a0# \u52a8\u6001\u8ffd\u8e2a\u4fee\u6539\u8bbe\u7f6e\uff0c\u5982\u672a\u8bbe\u7f6e\u53ea\u4f1a\u63d0\u793a\u8b66\u544a<br> \u00a0 \u00a0\"SQLALCHEMY_TRACK_MODIFICATIONS\": False,<br> \u00a0 \u00a0# \u67e5\u8be2\u65f6\u4f1a\u663e\u793a\u539f\u59cbSQL\u8bed\u53e5<br> \u00a0 \u00a0\"SQLALCHEMY_ECHO\": False,<br>\u200b<br> \u00a0 \u00a0# \u628asession\u901a\u8fc7SQLAlchmey\u4fdd\u5b58\u5230mysql\u4e2d<br> \u00a0 \u00a0\"SESSION_TYPE\": \"sqlalchemy\", \u00a0# session\u7c7b\u578b\u4e3asqlalchemy<br> \u00a0 \u00a0\"SESSION_SQLALCHEMY\": db, \u00a0# SQLAlchemy\u7684\u6570\u636e\u5e93\u8fde\u63a5\u5bf9\u8c61<br> \u00a0 \u00a0\"SESSION_SQLALCHEMY_TABLE\": 'db_session', \u00a0# session\u8981\u4fdd\u5b58\u7684\u8868\u540d\u79f0<br> \u00a0 \u00a0\"SESSION_PERMANENT\": True, \u00a0 \u00a0# \u5982\u679c\u8bbe\u7f6e\u4e3aTrue\uff0c\u5219\u5173\u95ed\u6d4f\u89c8\u5668session\u5c31\u5931\u6548<br> \u00a0 \u00a0\"SESSION_USE_SIGNER\": True, \u00a0# \u662f\u5426\u5bf9\u53d1\u9001\u5230\u6d4f\u89c8\u5668\u4e0asession\u7684cookie\u503c\u8fdb\u884c\u6dfb\u52a0\u7b7e\u540d\uff0c\u9632\u6b62\u4e32\u6539\u3002<br> \u00a0 \u00a0\"SESSION_KEY_PREFIX\": \"session:\" \u00a0# session\u6570\u636e\u8868\u4e2dsessionID\u7684\u524d\u7f00\uff0c\u9ed8\u8ba4\u5c31\u662f session:<br>})<br>\u200b<br>db.init_app(app)<br>\u200b<br># \u52a1\u5fc5\u4fdd\u8bc1\u5728\u6570\u636e\u5e93\u914d\u7f6e\u521d\u59cb\u5316\u4ee5\u540e\u624d\u8fdb\u884csession\u5b58\u50a8\u7c7b\u7684\u521d\u59cb\u5316<br>session_store.init_app(app)<br>\u200b<br>\u200b<br># \u5982\u679c\u8981\u628asession\u4fdd\u5b58\u5230\u6570\u636e\u5e93\u4e2d\uff0c\u5219\u5fc5\u987b\u5148\u6267\u884cdb.create_all() \u8ba9\u6570\u636e\u5e93\u63d0\u524d\u521b\u5efasession\u8868\u3002\u5426\u5219\u4f7f\u7528session\u65f6\u62a5\u9519\u3002<br>@app.route(\"\/create\")<br>def create_table():<br> \u00a0 \u00a0db.create_all() \u00a0# \u4e3a\u9879\u76ee\u4e2d\u88ab\u8bc6\u522b\u7684\u6240\u6709\u6a21\u578b\u521b\u5efa\u6570\u636e\u8868<br> \u00a0 \u00a0return \"ok\"<br>\u200b<br>\u200b<br>@app.route(\"\/drop\")<br>def drop_table():<br> \u00a0 \u00a0db.drop_all() \u00a0# \u4e3a\u9879\u76ee\u4e2d\u88ab\u8bc6\u522b\u7684\u6240\u6709\u6a21\u578b\u5220\u9664\u6570\u636e\u8868<br> \u00a0 \u00a0return \"ok\"<br>\u200b<br>@app.route(\"\/\")<br>def index():<br> \u00a0 \u00a0return \"ok\"<br>\u200b<br>@app.route(\"\/set\")<br>def set_session():<br> \u00a0 \u00a0session[\"uname\"] = \"xiaoming\"<br> \u00a0 \u00a0session[\"age\"] = 18<br> \u00a0 \u00a0return \"ok\"<br>\u200b<br>@app.route(\"\/get\")<br>def get_session():<br> \u00a0 \u00a0print(session.get(\"uname\"))<br> \u00a0 \u00a0print(session.get(\"age\"))<br> \u00a0 \u00a0return \"ok\"<br>\u200b<br>@app.route(\"\/del\")<br>def del_session():<br> \u00a0 \u00a0# \u6b64\u5904\u7684\u5220\u9664\uff0c\u4e0d\u662f\u5220\u9664\u7528\u6237\u5bf9\u5e94\u7684session\u8868\u8bb0\u5f55\uff0c\u800c\u662f\u5220\u9664session\u503c\u800c\u5df2\u3002<br> \u00a0 \u00a0print(session.pop(\"uname\"))<br> \u00a0 \u00a0print(session.pop(\"age\"))<br> \u00a0 \u00a0return \"ok\"<br>\u200b<br>\u200b<br>if __name__ == '__main__':<br> \u00a0 \u00a0app.run()<br>\u200b<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">redis\u4fdd\u5b58session\u7684\u57fa\u672c\u914d\u7f6e<\/h3>\n\n\n\n<p>\u8fd9\u4e2a\u529f\u80fd\u5fc5\u987b\u786e\u4fdd\uff0c\u670d\u52a1\u5668\u5fc5\u987b\u5df2\u7ecf\u5b89\u88c5\u4e86redis\u800c\u4e14\u5f53\u524d\u9879\u76ee\u865a\u62df\u73af\u5883\u4e2d\u5df2\u7ecf\u5b89\u88c5\u4e86redis\u6269\u5c55\u5e93<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pip install flask-redis -i https:\/\/pypi.douban.com\/simple<\/pre>\n\n\n\n<p>flask-redis\u662f\u7b2c\u4e09\u65b9\u5f00\u53d1\u8005\u4e3a\u4e86\u65b9\u4fbf\u6211\u4eec\u5728flask\u6846\u67b6\u4e2d\u96c6\u6210redis\u6570\u636e\u5e93\u64cd\u4f5c\u6240\u5c01\u88c5\u4e00\u4e2aredis\u64cd\u4f5c\u5e93\u3001<\/p>\n\n\n\n<p>\u5728flask\u4e2d\u8981\u57fa\u4e8eflask-redis\u8fdb\u884c\u6570\u636e\u5e93\u5219\u53ef\u4ee5\u5b8c\u6210\u4ee5\u4e0b3\u4e2a\u6b65\u9aa4\u5373\u53ef\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">from flask import Flask<br>from flask_redis import FlaskRedis<br>\u200b<br># \u5b9e\u4f8b\u5316<br>app = Flask(__name__)<br>session_redis = FlaskRedis(config_prefix=\"SESSION\")<br>user_redis = FlaskRedis(config_prefix=\"USER\")<br>order_redis = FlaskRedis(config_prefix=\"ORDER\")<br>\u200b<br># \u521d\u59cb\u5316 flask_redis<br>session_redis.init_app(app)<br>user_redis.init_app(app)<br>order_redis.init_app(app)<br>\u200b<br>@app.route(\"\/\")<br>def q2():<br> \u00a0  user_redis.setnx(\"doing\", 100)<br> \u00a0  return \"ok\"<br>\u200b<br>if __name__ == '__main__':<br>\u200b<br> \u00a0  app.run(host=\"0.0.0.0\", port=5000, debug=True)<\/pre>\n\n\n\n<p>\u5728redis\u4e2d\u4fdd\u5b58session\uff0c\u4ee3\u7801\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">from flask import Flask<br>from flask_redis import FlaskRedis<br>from flask_session import Session<br>from flask import session<br>\u200b<br>app = Flask(__name__, template_folder=\"templates\", static_folder=\"static\")<br>\u200b<br>redis0 = FlaskRedis(config_prefix=\"REDIS\")<br>redis1 = FlaskRedis(config_prefix=\"SESSION_REDIS\")<br>session_store = Session()<br># \u914d\u7f6e<br>app.config.update({<br> \u00a0 \u00a0\"DEBUG\": True,<br> \u00a0 \u00a0# \u4f7f\u7528session\u4e4b\u524d,\u5fc5\u987b\u914d\u7f6e\u4e00\u4e0b\u79d8\u94a5<br> \u00a0 \u00a0\"SECRET_KEY\": \"*(%#4sxcz(^(#$#8423\",<br> \u00a0 \u00a0\"REDIS_URL\": \"redis:\/\/:123456@127.0.0.1:6379\/0\",<br> \u00a0 \u00a0\"SESSION_REDIS_URL\": \"redis:\/\/:123456@127.0.0.1:6379\/1\",<br>\u200b<br> \u00a0 \u00a0# \u628asession\u4fdd\u5b58\u5230redis\u4e2d<br> \u00a0 \u00a0\"SESSION_TYPE\": \"redis\", \u00a0# session\u7c7b\u578b\u4e3asqlalchemy<br> \u00a0 \u00a0\"SESSION_PERMANENT\": True, \u00a0# \u5982\u679c\u8bbe\u7f6e\u4e3aTrue\uff0c\u5219\u5173\u95ed\u6d4f\u89c8\u5668session\u5c31\u5931\u6548<br> \u00a0 \u00a0\"SESSION_USE_SIGNER\": True, \u00a0# \u662f\u5426\u5bf9\u53d1\u9001\u5230\u6d4f\u89c8\u5668\u4e0asession\u7684cookie\u503c\u8fdb\u884c\u6dfb\u52a0\u7b7e\u540d\uff0c\u9632\u6b62\u4e32\u6539\u3002<br> \u00a0 \u00a0\"SESSION_KEY_PREFIX\": \"session:\", \u00a0# session\u6570\u636e\u8868\u4e2dsessionID\u7684\u524d\u7f00\uff0c\u9ed8\u8ba4\u5c31\u662f session:<br> \u00a0 \u00a0# session\u4fdd\u5b58\u6570\u636e\u5230redis\u65f6\u542f\u7528\u7684\u94fe\u63a5\u5bf9\u8c61<br> \u00a0 \u00a0\"SESSION_REDIS\": redis1, \u00a0 \u00a0 \u00a0# \u7528\u4e8e\u8fde\u63a5redis\u7684\u914d\u7f6e<br>})<br>\u200b<br>\u200b<br>redis0.init_app(app)<br>redis1.init_app(app)<br>\u200b<br># \u52a1\u5fc5\u4fdd\u8bc1session\u5b58\u50a8\u7c7b\u521d\u59cb\u5316\u4e4b\u524d\uff0credis\u5df2\u7ecf\u5b8c\u6210\u521d\u59cb\u5316\u4e86\u3002<br>session_store.init_app(app)<br>\u200b<br>@app.route(\"\/\")<br>def index():<br> \u00a0 \u00a0return \"ok\"<br>\u200b<br>\u200b<br>@app.route(\"\/set\")<br>def set_session():<br> \u00a0 \u00a0session[\"uname\"] = \"xiaoming\"<br> \u00a0 \u00a0session[\"age\"] = 18<br> \u00a0 \u00a0return \"ok\"<br>\u200b<br>\u200b<br>@app.route(\"\/get\")<br>def get_session():<br> \u00a0 \u00a0print(session.get(\"uname\"))<br> \u00a0 \u00a0print(session.get(\"age\"))<br> \u00a0 \u00a0return \"ok\"<br>\u200b<br>\u200b<br>@app.route(\"\/del\")<br>def del_session():<br> \u00a0 \u00a0# \u6b64\u5904\u7684\u5220\u9664\uff0c\u662f\u76f4\u63a5\u5220\u9664\u4fdd\u5b58\u5728redis\u4e2d\u7684\u6570\u636e\uff0c\u5f53\u6240\u6709session\u88ab\u5220\u9664\uff0c\u5219key\u4e5f\u4f1a\u6d88\u5931\u4e86\u3002<br> \u00a0 \u00a0print(session.pop(\"uname\"))<br> \u00a0 \u00a0print(session.pop(\"age\"))<br> \u00a0 \u00a0return \"ok\"<br>\u200b<br>\u200b<br>if __name__ == '__main__':<br> \u00a0 \u00a0app.run()<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\"><\/h1>\n","protected":false},"excerpt":{"rendered":"<p>Faker \u6587\u6863: https:\/\/faker.readthedocs.io\/en\/master\/locale [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-17","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/22z.top\/index.php?rest_route=\/wp\/v2\/posts\/17","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/22z.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/22z.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/22z.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/22z.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=17"}],"version-history":[{"count":1,"href":"https:\/\/22z.top\/index.php?rest_route=\/wp\/v2\/posts\/17\/revisions"}],"predecessor-version":[{"id":18,"href":"https:\/\/22z.top\/index.php?rest_route=\/wp\/v2\/posts\/17\/revisions\/18"}],"wp:attachment":[{"href":"https:\/\/22z.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=17"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/22z.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=17"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/22z.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=17"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}