当前位置: 首页 > news >正文

如何在电影网站中做淘客wordpress 虚拟商品插件

如何在电影网站中做淘客,wordpress 虚拟商品插件,韩城全员核酸检测,网络营销与直播电商是干什么的业务逻辑不能用http状态码判断#xff0c;应该有自己的逻辑判断。想要前端需要判断#xff08;好多if…else#xff09;#xff0c;所以需要标准化#xff0c;标准化返回。 json标准化返回: 最外面#xff1a;data,message,code三个字段。 data#xff1a;返回的数据 co…业务逻辑不能用http状态码判断应该有自己的逻辑判断。想要前端需要判断好多if…else所以需要标准化标准化返回。 json标准化返回: 最外面data,message,code三个字段。 data返回的数据 code应用状态码先设计好成功-0失败–登录失败1注册失败2 msg返回的说明 我们写的接口也要按照这个格式来 添加libs/response.py def generate_response(data None, msg success!, code 10000):# 约定返回的数据格式if data is None:data []return {code: code,msg: msg,data: data}然后修改返回 login.py from flask import Blueprint, request from config.settings import user_dict from libs.response import generate_responselogin_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 generate_response(msgsuccess)return generate_response(msglogin fail!, code10001)register.py from flask import Blueprint, request from config.settings import user_dict from libs.response import generate_responseregister_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 generate_response(msg参数传递不完整, code3)elif passwd ! re_passwd:return generate_response(msg注册密码不一致, code2)elif username in user_dict:return generate_response(msg用户已注册,code1)else:user_dict[username] passwdprint(fuser_dict is {user_dict})return generate_response(msgregister success!, code10000)连接数据库为了避免频繁的打开关闭消耗过多资源 libs/conn_mysql.py import pymysql from config.settings import DB_PASS, DB_PORT, DB_SCHEM, DB_USER, DB_HOSTdef conn_mysql():conn pymysql.connect(host DB_HOST,port DB_PORT,user DB_USER,password DB_PASS,db DB_SCHEM)return conn为了只连一次绑到app上 app.py添加 上面返回了一个连接对象conn把他作为一个属性交给了sq_app对象再给sq_app对象随意的可以设置属性自己定义mysql_db。所以把连接交给了app。 def create_app():#连接数据库sq_app.mysql_db conn_mysql()刚好flask提供了一个current_app在你请求过来的时候会把你当前的app的上下文内容放在current_app里。 router/product_view/product.py from . import product_bp from flask import current_app from libs.response import generate_responseproduct_bp.route(/product/get) def get_product():# import pymysql# db pymysql.connect(host192.168.1.150,# userjiangda97,# passwordJiangda123#,# databasesq-flask)cursor current_app.mysql_db.cursor()cursor.execute(select * from product_info)data cursor.fetchall()print(data)# db.close()if data:return generate_response(datadata, msgget product info success!)else:return generate_response(msgget data empty, code 4)router/product_view/__init__.py from flask import Blueprint product_bp Blueprint(product_bp, __name__, url_prefix/v1)from . import product分表 优点节省空间避免数据不必要的膨胀。 缺点: 新增了一个product_kind_table表 select product_info.product_id, product_info.product_name, product_kind_table.kind, product_info.product_price, product_info.product_address from product_info inner join product_kind_table on product_kind id where product_id 1修改代码router/product_view/product.py # 通过url携带参数来传递idid request.args.get(id)if id is None:sql_str fselect product_info.product_id, product_info.product_name, product_kind_table.kind, product_info.product_price, product_info.product_address \from product_info inner join product_kind_table \on product_kind id\where product_id {id}else:sql_str fselect product_info.product_id, product_info.product_name, product_kind_table.kind, product_info.product_price, product_info.product_address \from product_info inner join product_kind_table \on product_kind id\where product_id {id}cursor current_app.mysql_db.cursor()cursor.execute(sql_str)data cursor.fetchall()# print(data)# db.close ()if data:return generate_response(datadata, msgget product info success!)else:return generate_response(msgget data empty, code 4)ORM object relation mapping对象关系映射 orm对象持久化对象 数据库的表 – 类 表中的字段 – 属性 一行行记录 – 对象 models/__init__.py from flask_sqlalchemy import SQLAlchemy#生成对象映射实例db就是我们的中间层 db SQLAlchemy()def init_app_db(app):db.init_app(app)models/product.py from . import dbclass ProductInfo(db.Model):__tablename__ product_infoproduct_id db.Column(db.Integer, primary_keyTrue, autoincrementTrue)product_name db.Column(db.String(256))product_kind db.Column(db.Integer)product_price db.Column(db.Float)product_address db.Column(db.String(128))都得运行init文件添加from . import product 绑定到核心对象app.py文件添加 import modelsmodels.init_app_db(sq_app) 最后运行报错 RuntimeError: Either ‘SQLALCHEMY_DATABASE_URI’ or ‘SQLALCHEMY_BINDS’ must be set. 意思是需要设置这两个变量即orm映射的数据库信息。 config/settings.py添加 SQLALCHEMY_DATABASE_URI mysqlpymysql://jiangda97:Jiangda123#192.168.1.150:3306/sq-flask之前我们在app.py将settings都读入sq_app.config里了且是都大写的key。 刚好我们的SQLAchemy底层就是会自动读取sq_app.config里的关于连接数据库的操作。 SQLALCHEMY_DATABASE_URI “mysqlpymysql://jiangda97:Jiangda123#192.168.1.150:3306/sq-flask” 底层用的连接方式://用户名:密码host:port/数据库名 然后我们准备用它来完成一个增加操作在router/product_view/product.py from models.product import ProductInfo from models import db# 新增数据库记录 product_bp.route(/product/add, methods[POST]) def product_add():# 接收客户端的传递pro_name request.json.get(proname)pro_kind request.json.get(prokind)pro_price request.json.get(proprice)pro_address request.json.get(proadd)# 实例化类成对象proinfo ProductInfo()# 设置属性proinfo.product_name pro_nameproinfo.product_kind pro_kindproinfo.product_price pro_priceproinfo.product_address pro_address# 实例化并设置属性也可以这么写# proinfo ProductInfo(product_name pro_name,# product_kind pro_kind,# product_price pro_price,# product_address pro_address)# 生效到数据库db.session.add(proinfo)db.session.commit()return generate_response(msgadd success!)migrate 添加models/product.py 在该类下 add_time db.Column(db.DateTime, defaultdatetime.datetime.now())数据库迁移工具版本管理 – flask-migrate 改server.py # 数据库迁移工具版本管理 -- flask-migrate from flask_migrate import Migrate from models import dbmigrate Migrate(sq_app, db)if __name__ __main__:sq_app.run(host sq_app.config[HOST],port sq_app.config[PORT],debug sq_app.config[DEBUG])方便开发不改变应用逻辑只是方便我们把orm映射的类这个添加的字段生效到数据库不需要自己修改数据库了。 terminal中输入该命令在命令行操控flask – flask cli (venv) D:\sq-flaskflask --app server:sq_app db init Creating directory D:\\sq-flask\\migrations ... done Creating directory D:\\sq-flask\\migrations\\versions ... done Generating D:\sq-flask\migrations\alembic.ini ... done Generating D:\sq-flask\migrations\env.py ... done Generating D:\sq-flask\migrations\README ... done Generating D:\sq-flask\migrations\script.py.mako ... done Please edit configuration/connection/logging settings in D:\\sq-flask\\migrations\\alembic.ini befor e proceeding. 然后就会产生一个migrations的文件夹 migrate单独用不了借助flask cli命令行工具migrate绑定好app后自动创建好db命令。 初始化flask --app server:sq_app db init –app 指定运行哪个app 初始化会创建migrations的文件夹 可以随时删再init做了修改提交版本 (venv) D:\sq-flaskflask --app server:sq_app db migrate -m add time INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.autogenerate.compare] Detected removed table product_kind_table INFO [alembic.autogenerate.compare] Detected added column product_info.add_time INFO [alembic.autogenerate.compare] Detected NULL on column product_info.product_name INFO [alembic.autogenerate.compare] Detected NULL on column product_info.product_kind INFO [alembic.autogenerate.compare] Detected NULL on column product_info.product_price INFO [alembic.autogenerate.compare] Detected NULL on column product_info.product_address Generating D:\衡山\2023-文老师\sq-flask\migrations\versions\43aac3b3bb51_add_time.py ... done upgrade就可以生效了 (venv) D:\sq-flaskflask --app server:sq_app db upgrade INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running upgrade - 43aac3b3bb51, add time 严格按照orm定义好的模型保持数据库和模型一致如果数据库有orm定义的模型没有则会把数据库多出来的删掉。 回退:flask --app server:sq_app db downgrade 命令行进入上下文环境(用来测试调试代码) flask --app server:sq_app shell (venv) D:\sq-flaskflask --app server:sq_app shell Python 3.9.1 (tags/v3.9.1:1e5d33e, Dec 7 2020, 17:08:21) [MSC v.1927 64 bit (AMD64)] on win32 App: app Instance: D:\sq-flask\instancefrom models.product import ProductInfop1 ProductInfo()p1.product_name 3333p1.product_kind 2p1.product_price 22p1.product_address 山东from models import dbdb.session.add(p1)db.session.commit()查询和修改 修改其属性。 p2 ProductInfo.query.get(3)p2 ProductInfo 3dir(p2) [__abstract__, __annotations__, __class__, __delattr__, __dict__, __dir__, __doc__, __eq__, __for mat__, __fsa__, __ge__, __getattribute__, __gt__, __hash__, __init__, __init_subclass__, __le__, __lt__, __mapper__, __module__, __ne__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__ , __sizeof__, __str__, __subclasshook__, __table__, __tablename__, __weakref__, _sa_class_manager, _sa_instance_state, _sa_registry, add_time, metadata, product_address, product_id, product_kind, pr oduct_name, product_price, query, query_class, registry]p2.product_name 牛肉p2.product_name 牛肌肉db.session.add(p2)db.session.commit()删除 p3 ProductInfo.query.get(4)db.session.delete(p3)db.session.commit() 综合id通过url携带参数传递完成修改和删除 删除/product/modify – PUT 删除/product/delete – DELETE router/product_view/product.py product_bp.route(/product/modify, methods[PUT]) def product_modify():# 接收客户端的传递携带的参数id request.args.get(id)p1 ProductInfo.query.get(id)if p1:# 接收客户端的传递pro_name request.json.get(proname)pro_kind request.json.get(prokind)pro_price request.json.get(proprice)pro_address request.json.get(proadd)p1.product_name pro_namep1.product_kind pro_kindp1.product_price pro_pricep1.product_address pro_addressdb.session.add(p1)db.session.commit()return generate_response(msgmodify success!)else:return generate_response(msgno such product!, code5) 修改尽管你修改一个但你提交的时候得提交全部的字段 删除 product_bp.route(/product/delete, methods[DELETE]) def product_delete():id request.args.get(id)p2 ProductInfo.query.get(id)if p2:db.session.delete(p2)db.session.commit()return generate_response(msgdelete success)else:return generate_response(msgno such product, code6)查询 query.get() 一般用来查询主键 query.all() 查询所有列表类型 ProductInfo.query.filter_by(product_kind1).all() [ProductInfo 1, ProductInfo 2] ProductInfo.query.filter(ProductInfo.product_kind 1).all() [ProductInfo 1, ProductInfo 2]
http://www.tj-hxxt.cn/news/141565.html

相关文章:

  • 丽水市做网站的网站数据库模板下载
  • 临汾哪里有做网站的贵州企业网站建设公司
  • 电子政务网站建设收到网站代码后怎么做
  • 字母logo设计网站创新的大良网站建设
  • 网站备案期间可以用二级域名访问网站吗哈尔滨网站设计定制
  • 网站开发入门书如何做内容收费的网站
  • 网站建设需要材料开发游戏用什么编程软件
  • wordpress数据库密码加密多少位太原网站seo顾问
  • 国内免费产品发布网站工作室建设规划
  • 做网站公司上什么平台宁波网络公司网站建s
  • 温州做网站哪家公司好甘肃锦华建设集团网站
  • 在线流程图网站怎么做网站首页设计欣赏
  • 维护公司网站建设网站拥有者查询
  • wordpress 主图截图网络优化网站建设学习
  • 澄城县城乡建设局网站儿童主题网站的内容建设
  • 网站营销外包公司简介长沙传媒公司招聘
  • 我的南京网站wordpress企业魔板
  • 网站超级外链wordpress 第三方支付
  • 南京网站开发询南京乐识如何注册公司注册公司需要什么
  • 全省建设信息网站参考消息电子版报纸
  • 成都建站模板网站开发怎么破解wordpress图片防盗链
  • 如何用ps做网站导航条项目管理软件project手机版
  • 如何利用开源代码做网站广州比较好的外贸公司有哪些
  • 在百度上如何上传自己的网站品牌设计网站公司
  • 网站 优化 件大企业网站建设公司排名
  • 视觉设计的网站和app响应式网站建设方案
  • php工具箱是直接做网站的吗wordpress guid
  • 免费的ai写作网站网站开发专业都有哪些课程
  • 西安企业建站机构那里有甘肃省建设厅执业注册中心网站
  • 家政网站模板wordpress模板 手机版