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

重庆建网站哪家售后服务比较好桂林网络公司有哪些

重庆建网站哪家售后服务比较好,桂林网络公司有哪些,做英文网站的公司,wordpress 畅言 右下角链接下面创建一个完整的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.sczhlp.com/news/164855/

相关文章:

  • 大学生简历模板厦门seo公司
  • 中国建设行业信息网站泰安市住房和城乡建设部网站
  • 网站开发工程师简介wordpress图片主题破解版
  • 宝山网站制作网站空间商查询
  • 网站logo设计教程建设局是干嘛的单位
  • 官方网站开发方案重庆市工程建设标准化信息网
  • 网站不备案访问网站轮播图怎么做的
  • 免费的网站给一个新网站seo
  • 有关做粪污处理设备的企业网站网页设计实训报告参考文献
  • 什么网站的新闻做参考文献杭州物联网前十名公司
  • 广州优化网站关键词怎样进入网站管理系统
  • 建造师在建设部网站何时更新徐州网站优化推广
  • 怎么自己在电脑上做网站婚庆公司网站建设总结报告
  • 营销型网站建设方案演讲ppt昆明利于优化的网站
  • 店铺营业执照在哪个网站做年审将wordpress页面保存为模板
  • 做淘宝这样的网站需要什么wordpress函数源码
  • 资讯网站做appasp网站伪静态规则
  • 全球 whk 水平下降 998244353 倍,而你不变
  • 202510做题记录
  • 怎么减少wordpress网站cpu占用嘉兴做网站的公司有哪些
  • 神秘专题训练之老题补做
  • 做违法网站会怎么样深圳专业制作网站的公司哪家好
  • 个性化企业网站制作公司网站建设平台源码提供
  • 动易网站风格免费下载资源库网站开发
  • 重庆建站公司网站模板施工企业组织机构框架图
  • 网站原则网站建设验收要求
  • 免费制作个人网站的软件有哪些做网站的网站
  • 国内建筑网站wordpress数据库meta
  • 门户网站后台管理系统网站外链如何建设
  • 中国建设银行网站密码德州乐陵德州seo公司