You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将表单提交的用户数据存入Local Storage后传递至Flask并实现数据展示

Got it, let's walk through this complete flow—collecting form data, stashing it in Local Storage, sending it to a Flask backend, and then displaying it. I'll break it down into actionable steps with code examples you can copy-paste and tweak.

Step 1: Collect Form Data & Save to Local Storage

First, you'll need a basic HTML form to capture user input, plus some JavaScript to handle submission and save the data to Local Storage. Keep in mind: Local Storage only stores strings, so we'll convert our user data object to JSON before saving.

<!-- index.html (frontend) -->
<form id="userForm">
  <label for="name">Name:</label>
  <input type="text" id="name" name="name" required>
  
  <label for="email">Email:</label>
  <input type="email" id="email" name="email" required>
  
  <button type="submit">Save to Local Storage</button>
</form>

<script>
document.getElementById('userForm').addEventListener('submit', function(e) {
  e.preventDefault(); // Stop default form submission
  
  // Gather form data into an object
  const userData = {
    name: document.getElementById('name').value,
    email: document.getElementById('email').value
  };
  
  // Save to Local Storage (convert object to JSON string)
  localStorage.setItem('userData', JSON.stringify(userData));
  
  alert('Data saved to Local Storage!');
  this.reset(); // Clear the form after saving
});
</script>

Step 2: Send Local Storage Data to Flask

Next, add a way to sync the stored data to your Flask backend. You can use a dedicated button to trigger the sync, or even auto-send when the page loads. We'll use the Fetch API for this—make sure to parse the JSON from Local Storage first.

Add this to your frontend script (or a separate JS file):

<button id="syncToServer">Sync Data to Server</button>

<script>
document.getElementById('syncToServer').addEventListener('click', async function() {
  // Retrieve data from Local Storage
  const storedData = localStorage.getItem('userData');
  if (!storedData) {
    alert('No data to sync!');
    return;
  }
  
  try {
    const response = await fetch('http://localhost:5000/api/save-user', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: storedData, // Send the JSON string directly
    });
    
    if (response.ok) {
      const result = await response.json();
      alert(result.message);
      // Optional: Clear Local Storage after successful sync
      localStorage.removeItem('userData');
    } else {
      throw new Error('Failed to sync data');
    }
  } catch (error) {
    console.error('Sync error:', error);
    alert('Failed to sync data. Check console for details.');
  }
});
</script>

Step 3: Flask Backend Setup

Now set up your Flask app to receive the data, store it (we'll use an in-memory list for simplicity—replace with a database like SQLite/PostgreSQL for production), and prepare it for display.

First, install required packages:

pip install flask flask-cors

Then create your Flask app file (app.py):

# app.py
from flask import Flask, request, jsonify, render_template
from flask_cors import CORS

app = Flask(__name__)
CORS(app) # Allow cross-origin requests (frontend and backend run on different ports)

# In-memory storage (replace with a database in production)
user_records = []

@app.route('/api/save-user', methods=['POST'])
def save_user():
    user_data = request.get_json()
    # Validate incoming data
    if not user_data or 'name' not in user_data or 'email' not in user_data:
        return jsonify({'error': 'Missing required fields'}), 400
    
    user_records.append(user_data)
    return jsonify({'message': 'Data saved successfully!', 'user': user_data}), 201

@app.route('/display-users')
def display_users():
    # Pass user records to the template for rendering
    return render_template('display.html', users=user_records)

if __name__ == '__main__':
    app.run(debug=True)

Step 4: Create a Flask Template to Display Data

Make a templates folder in your project root, then create display.html inside it. This template uses Jinja2 to render the stored user data:

<!-- templates/display.html -->
<!DOCTYPE html>
<html>
<head>
    <title>Stored User Data</title>
</head>
<body>
    <h1>User Records</h1>
    {% if users %}
        <ul>
            {% for user in users %}
                <li>Name: {{ user.name }} | Email: {{ user.email }}</li>
            {% endfor %}
        </ul>
    {% else %}
        <p>No user data stored yet.</p>
    {% endif %}
    <a href="/">Go back to form</a>
</body>
</html>

Key Notes & Best Practices

  • Local Storage Limitations: Local Storage is per-browser and per-domain—if the user clears their browser data, the stored info is lost. Never store sensitive data (like passwords) here.
  • Database Replacement: The in-memory user_records list resets when you restart the Flask app. For production, use a database like SQLite (built into Python) or PostgreSQL with SQLAlchemy.
  • Error Handling: Add more robust validation (e.g., check for valid email formats) in both frontend and backend.
  • CORS: The flask-cors package is used here because frontend (e.g., http://localhost:8000) and Flask backend (http://localhost:5000) run on different ports. In production, host both on the same domain or configure CORS restrictively.

内容的提问来源于stack exchange,提问作者Zahin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 19:42:39