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

seo整站优化更能准确获得客户广告传媒公司名称

seo整站优化更能准确获得客户,广告传媒公司名称,dede 建设网站,百度软件中心下面创建一个完整的Flask项目#xff0c;包含flask_login、flask_session、flask_cors和flasgger等组件。这个项目将包含用户认证、API文档、跨域支持等功能。 功能特性 用户认证系统 (Flask-Login) 用户登录/注册会话管理登录状态保护 会话管理 (Flask-Session) 文件系统会…下面创建一个完整的Flask项目包含flask_login、flask_session、flask_cors和flasgger等组件。这个项目将包含用户认证、API文档、跨域支持等功能。 功能特性 用户认证系统 (Flask-Login) 用户登录/注册会话管理登录状态保护 会话管理 (Flask-Session) 文件系统会话存储会话数据持久化 跨域支持 (Flask-CORS) 支持前后端分离API跨域访问 API文档 (Flasgger) Swagger UI界面自动生成API文档交互式API测试 完整代码 app.py from flask import Flask, request, jsonify, session, render_template_string from flask_login import LoginManager, UserMixin, login_user, logout_user, login_required, current_user from flask_session import Session from flask_cors import CORS from flasgger import Swagger, swag_from from werkzeug.security import generate_password_hash, check_password_hash import os from datetime import datetime# 创建Flask应用 app Flask(__name__) app.config[SECRET_KEY] your-secret-key-here app.config[SESSION_TYPE] filesystem app.config[SESSION_PERMANENT] False app.config[SESSION_USE_SIGNER] True# 初始化扩展 Session(app) CORS(app) login_manager LoginManager() login_manager.init_app(app) login_manager.login_view login login_manager.login_message 请先登录# Swagger配置 swagger_config {headers: [],specs: [{endpoint: apispec_1,route: /apispec_1.json,rule_filter: lambda rule: True,model_filter: lambda tag: True,}],static_url_path: /flasgger_static,swagger_ui: True,specs_route: /docs/ }swagger_template {swagger: 2.0,info: {title: Flask练手项目API,description: 一个包含用户认证、会话管理的完整Flask项目,version: 1.0.0},host: localhost:5000,basePath: /,schemes: [http],securityDefinitions: {Bearer: {type: apiKey,name: Authorization,in: header}} }swagger Swagger(app, configswagger_config, templateswagger_template)# 模拟用户数据库 users_db {admin: {id: 1,username: admin,password_hash: generate_password_hash(admin123),email: adminexample.com,created_at: datetime.now()},user1: {id: 2,username: user1,password_hash: generate_password_hash(user123),email: user1example.com,created_at: datetime.now()} }# 用户类 class User(UserMixin):def __init__(self, user_data):self.id user_data[id]self.username user_data[username]self.email user_data[email]self.password_hash user_data[password_hash]self.created_at user_data[created_at]def check_password(self, password):return check_password_hash(self.password_hash, password)def to_dict(self):return {id: self.id,username: self.username,email: self.email,created_at: self.created_at.isoformat()}login_manager.user_loader def load_user(user_id):for username, user_data in users_db.items():if user_data[id] int(user_id):return User(user_data)return None# 首页 app.route(/) def index():首页---tags:- 首页responses:200:description: 返回首页HTMLhtml_template !DOCTYPE htmlhtmlheadtitleFlask练手项目/titlemeta charsetutf-8stylebody { font-family: Arial, sans-serif; margin: 40px; }.container { max-width: 800px; margin: 0 auto; }.btn { padding: 10px 20px; margin: 5px; text-decoration: none; background: #007bff; color: white; border-radius: 5px; }.btn:hover { background: #0056b3; }.info { background: #f8f9fa; padding: 20px; border-radius: 5px; margin: 20px 0; }/style/headbodydiv classcontainerh1Flask练手项目/h1div classinfoh3项目功能/h3ulli用户认证系统 (Flask-Login)/lili会话管理 (Flask-Session)/lili跨域支持 (Flask-CORS)/liliAPI文档 (Flasgger)/li/ul/div{% if current_user.is_authenticated %}p欢迎回来{{ current_user.username }}/pa href/profile classbtn个人资料/aa href/logout classbtn退出登录/a{% else %}p请登录以访问更多功能/pa href/login classbtn登录/aa href/register classbtn注册/a{% endif %}div stylemargin-top: 30px;a href/docs/ classbtnAPI文档/aa href/api/users classbtn用户列表API/a/div/div/body/htmlreturn render_template_string(html_template)# 登录页面 app.route(/login, methods[GET, POST]) def login():用户登录---tags:- 用户认证parameters:- name: usernamein: formDatatype: stringrequired: truedescription: 用户名- name: passwordin: formDatatype: stringrequired: truedescription: 密码responses:200:description: 登录成功400:description: 登录失败login_template !DOCTYPE htmlhtmlheadtitle登录/titlemeta charsetutf-8stylebody { font-family: Arial, sans-serif; margin: 40px; }.container { max-width: 400px; margin: 0 auto; }.form-group { margin: 15px 0; }label { display: block; margin-bottom: 5px; }input { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 5px; }.btn { width: 100%; padding: 10px; background: #007bff; color: white; border: none; border-radius: 5px; cursor: pointer; }.btn:hover { background: #0056b3; }.error { color: red; margin: 10px 0; }.info { background: #e7f3ff; padding: 15px; border-radius: 5px; margin: 20px 0; }/style/headbodydiv classcontainerh2用户登录/h2div classinfostrong测试账号/strongbr用户名: admin, 密码: admin123br用户名: user1, 密码: user123/div{% if error %}div classerror{{ error }}/div{% endif %}form methodPOSTdiv classform-grouplabel用户名:/labelinput typetext nameusername required/divdiv classform-grouplabel密码:/labelinput typepassword namepassword required/divbutton typesubmit classbtn登录/button/formp styletext-align: center; margin-top: 20px;a href/返回首页/a | a href/register注册账号/a/p/div/body/htmlif request.method POST:if request.is_json:data request.get_json()username data.get(username)password data.get(password)else:username request.form.get(username)password request.form.get(password)if not username or not password:if request.is_json:return jsonify({error: 用户名和密码不能为空}), 400return render_template_string(login_template, error用户名和密码不能为空)user_data users_db.get(username)if user_data and check_password_hash(user_data[password_hash], password):user User(user_data)login_user(user)session[user_id] user.idif request.is_json:return jsonify({message: 登录成功,user: user.to_dict()})return render_template_string(success_template, message登录成功, redirect_url/)else:if request.is_json:return jsonify({error: 用户名或密码错误}), 400return render_template_string(login_template, error用户名或密码错误)return render_template_string(login_template)# 注册页面 app.route(/register, methods[GET, POST]) def register():用户注册---tags:- 用户认证parameters:- name: usernamein: formDatatype: stringrequired: truedescription: 用户名- name: passwordin: formDatatype: stringrequired: truedescription: 密码- name: emailin: formDatatype: stringrequired: truedescription: 邮箱responses:200:description: 注册成功400:description: 注册失败register_template !DOCTYPE htmlhtmlheadtitle注册/titlemeta charsetutf-8stylebody { font-family: Arial, sans-serif; margin: 40px; }.container { max-width: 400px; margin: 0 auto; }.form-group { margin: 15px 0; }label { display: block; margin-bottom: 5px; }input { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 5px; }.btn { width: 100%; padding: 10px; background: #28a745; color: white; border: none; border-radius: 5px; cursor: pointer; }.btn:hover { background: #218838; }.error { color: red; margin: 10px 0; }/style/headbodydiv classcontainerh2用户注册/h2{% if error %}div classerror{{ error }}/div{% endif %}form methodPOSTdiv classform-grouplabel用户名:/labelinput typetext nameusername required/divdiv classform-grouplabel邮箱:/labelinput typeemail nameemail required/divdiv classform-grouplabel密码:/labelinput typepassword namepassword required/divbutton typesubmit classbtn注册/button/formp styletext-align: center; margin-top: 20px;a href/返回首页/a | a href/login已有账号登录/a/p/div/body/htmlif request.method POST:if request.is_json:# 处理 JSON 请求data request.get_json()username data.get(username)password data.get(password)email data.get(email) # 注册时使用else:# 处理表单请求username request.form.get(username)password request.form.get(password)email request.form.get(email) # 注册时使用if not all([username, password, email]):error_msg 所有字段都是必填的if request.is_json:return jsonify({error: error_msg}), 400return render_template_string(register_template, errorerror_msg)if username in users_db:error_msg 用户名已存在if request.is_json:return jsonify({error: error_msg}), 400return render_template_string(register_template, errorerror_msg)# 创建新用户new_user_id max([user[id] for user in users_db.values()]) 1users_db[username] {id: new_user_id,username: username,password_hash: generate_password_hash(password),email: email,created_at: datetime.now()}success_msg 注册成功请登录if request.is_json:return jsonify({message: success_msg})return render_template_string(success_template, messagesuccess_msg, redirect_url/login)return render_template_string(register_template)# 退出登录 app.route(/logout) login_required def logout():用户退出登录---tags:- 用户认证responses:200:description: 退出成功logout_user()session.clear()if request.is_json:return jsonify({message: 退出登录成功})success_template !DOCTYPE htmlhtmlheadtitle退出成功/titlemeta charsetutf-8meta http-equivrefresh content2;url/stylebody { font-family: Arial, sans-serif; margin: 40px; text-align: center; }.success { color: green; font-size: 18px; }/style/headbodydiv classsuccessh2退出登录成功/h2p2秒后自动跳转到首页.../pa href/立即跳转/a/div/body/htmlreturn render_template_string(success_template)# 个人资料页面 app.route(/profile) login_required def profile():用户个人资料---tags:- 用户信息security:- Bearer: []responses:200:description: 返回用户信息schema:type: objectproperties:id:type: integerusername:type: stringemail:type: stringcreated_at:type: stringif request.is_json:return jsonify(current_user.to_dict())profile_template !DOCTYPE htmlhtmlheadtitle个人资料/titlemeta charsetutf-8stylebody { font-family: Arial, sans-serif; margin: 40px; }.container { max-width: 600px; margin: 0 auto; }.profile-card { background: #f8f9fa; padding: 20px; border-radius: 10px; }.btn { padding: 10px 20px; margin: 5px; text-decoration: none; background: #007bff; color: white; border-radius: 5px; }.btn:hover { background: #0056b3; }/style/headbodydiv classcontainerh2个人资料/h2div classprofile-cardpstrong用户ID:/strong {{ current_user.id }}/ppstrong用户名:/strong {{ current_user.username }}/ppstrong邮箱:/strong {{ current_user.email }}/ppstrong注册时间:/strong {{ current_user.created_at.strftime(%Y-%m-%d %H:%M:%S) }}/p/divdiv stylemargin-top: 20px;a href/ classbtn返回首页/aa href/logout classbtn退出登录/a/div/div/body/htmlreturn render_template_string(profile_template)# API路由 app.route(/api/users, methods[GET]) def get_users():获取用户列表---tags:- APIresponses:200:description: 用户列表schema:type: arrayitems:type: objectproperties:id:type: integerusername:type: stringemail:type: stringcreated_at:type: stringusers_list []for user_data in users_db.values():user User(user_data)users_list.append(user.to_dict())return jsonify({users: users_list,total: len(users_list)})app.route(/api/session-info) def session_info():获取会话信息---tags:- APIresponses:200:description: 会话信息return jsonify({session_id: session.get(_id, No session),user_authenticated: current_user.is_authenticated,user_info: current_user.to_dict() if current_user.is_authenticated else None,session_data: dict(session)})# 成功页面模板 success_template !DOCTYPE html html headtitle操作成功/titlemeta charsetutf-8meta http-equivrefresh content3;url{{ redirect_url }}stylebody { font-family: Arial, sans-serif; margin: 40px; text-align: center; }.success { color: green; font-size: 18px; }/style /head bodydiv classsuccessh2{{ message }}/h2p3秒后自动跳转.../pa href{{ redirect_url }}立即跳转/a/div /body /html if __name__ __main__:app.run(debugTrue, host0.0.0.0, port5000)流程图 环境搭建 uv init uv venv uv pip install flask flask_login flask_session flask_cors flasgger uv run app.py
http://www.hkea.cn/news/14478736/

相关文章:

  • 安徽富通建设集团有限公司网站12355能找回智慧团建密码吗
  • 网站logo上传怎么创建一个网页
  • 邮箱的官方网站注册wp网站源码
  • 惠州有哪些做网站的公司哈尔滨建设工程网
  • 软件ui设计怎么做网站创新创意设计作品
  • 论文收录网站排名网站制作公司有哪些
  • 广州专业网站制作哪家专业建筑工程施工承包合同
  • icp备案网站建设方案书米拓cms
  • 珠海市住房建设局网站做网站要多少钱 知乎
  • 外贸开发网站开发下载素材第三方网站是怎么做
  • 做网站数据库怎么做惠州网站建设找哪个公司
  • 烟台网站制作厂家电话wordpress订阅关闭
  • 做国际网站怎么能快速打开美容茌哪个网站做宣传好
  • 做网站栏目都包括什么东莞网站建设对比
  • 龙岩网站优化公司在线拼图网页版
  • 规范网站建设情况的报告建设工程报建备案网站
  • 湖北智能网站建设推荐北京快三开奖走势图一定牛
  • 建立大型网站吗一键logo设计官网
  • 怎么获取网站的图片利用公共dns做网站解析
  • 北京手机模板建站郑州做定制网站的公司
  • 网上书城网站开发的目的与意义wordpress 前台写文章
  • 单页面销售信网站赚钱系统眉山建设中等职业技术学校 网站
  • 模板网站为什么做不了优化企业官方网站如何做蓝v认证
  • 茶叶网站策划方案如何做好线上推广
  • 辽宁同鑫建设有限公司网站某网站搜索引擎优化
  • 江津集团网站建设海口最新新闻消息
  • cpa怎么做网站一般什么企业需要建站
  • 做网站营销怎么去推广wordpress varnish
  • 龙口建网站价格广东省农业农村厅网站
  • 网站开发公司有什么福利网站关键词用什么隔开