- 以下是由python web所架的成績繳交網站 當幹部小老師的,
都懶得輸入成績,所以我寫了個好東西 如果怕對方輸入假成績,還有上傳圖片的功能 第一次玩python web哈哈
整體佈局
.├── app.py├── grades.csv├── templates│ ├── index.html│ └── success.html└── uploads └── 4.jpgfrom flask import Flask, request, render_template, redirect, url_forimport osapp = Flask(__name__)UPLOAD_FOLDER = 'uploads'os.makedirs(UPLOAD_FOLDER, exist_ok=True)
@app.route('/')def index(): return render_template('index.html')
@app.route('/submit', methods=['POST'])def submit(): seatNumber = request.form['seatNumber'] score = request.form['score'] photo = request.files['photo']
if photo: filename = f"{seatNumber}.jpg" photo.save(os.path.join(UPLOAD_FOLDER, filename))
with open('grades.csv', 'a') as file: file.write(f'{seatNumber}, {score}\n')
return redirect(url_for('success'))
@app.route('/success')def success(): return render_template('success.html')
if __name__ == '__main__': app.run(host='0.0.0.0', port=60000)<!DOCTYPE html><html lang="zh-Hant"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>地科成績</title> <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet"> <style> .container { margin-top: 40px; } .card { border-radius: 10px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); transition: box-shadow 0.3s ease-in-out; } .card:hover { box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); } .btn-primary { background-color: #7778d3; border: none; color: white; padding: 10px 24px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; border-radius: 5px; transition-duration: 0.4s; cursor: pointer; } </style></head><body> <div class="container"> <div class="row"> <div class="col-md-6 offset-md-3"> <div class="card p-4"> <h2 class="text-center mb-4">地科成績</h2> <form action="/submit" method="POST" enctype="multipart/form-data"> <div class="form-group"> <label for="seatNumber">座號:</label> <input type="number" class="form-control" id="seatNumber" name="seatNumber" required> </div> <div class="form-group"> <label for="score">分數:</label> <input type="number" class="form-control" id="score" name="score" required> </div> <div class="form-group"> <label for="photo">上傳照片:</label> <input type="file" class="form-control-file" id="photo" name="photo" accept="image/*" required> </div> <button type="submit" class="btn btn-primary btn-block">提交</button> </form> <div id="result" class="mt-3 text-center"></div> </div> </div> </div> </div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.4/dist/umd/popper.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script></body></html><!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>提交成功</title> <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet"> <style> .container { margin-top: 20%; } .alert-success { font-size: 24px; text-align: center; } </style></head><body> <div class="container"> <div class="row"> <div class="col-md-6 offset-md-3"> <div class="alert alert-success"> 成績已成功提交! </div> </div> </div> </div> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.4/dist/umd/popper.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script></body></html> Thanks for reading!