编写一段基于Flask的校园点歌系统
时间: 2024-05-11 12:20:20 浏览: 20
下面是一个简单的校园点歌系统,基于 Flask 框架:
1. 首先,我们需要安装 Flask 和相关的扩展:
```
pip install Flask
pip install flask_sqlalchemy
pip install flask_wtf
```
2. 接下来,我们需要创建一个 app.py 文件,并导入相关依赖:
```python
from flask import Flask, render_template, redirect, url_for, flash
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
from flask_sqlalchemy import SQLAlchemy
import os
app = Flask(__name__)
app.config['SECRET_KEY'] = os.environ.get('SECRET_KEY') or 'you will never guess'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///songs.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
```
3. 接下来,我们定义一个 Song 模型,用于表示歌曲:
```python
class Song(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
artist = db.Column(db.String(100), nullable=False)
url = db.Column(db.String(200), nullable=False)
def __repr__(self):
return f"Song('{self.title}', '{self.artist}', '{self.url}')"
```
4. 接下来,我们定义一个表单类,用于添加歌曲:
```python
class SongForm(FlaskForm):
title = StringField('Title', validators=[DataRequired()])
artist = StringField('Artist', validators=[DataRequired()])
url = StringField('URL', validators=[DataRequired()])
submit = SubmitField('Add Song')
```
5. 接下来,我们定义一些视图函数,用于处理用户请求。例如,我们可以创建一个主页,用于显示所有的歌曲:
```python
@app.route('/')
def home():
songs = Song.query.all()
return render_template('home.html', songs=songs)
```
6. 我们还需要创建一个添加歌曲的页面:
```python
@app.route('/add', methods=['GET', 'POST'])
def add():
form = SongForm()
if form.validate_on_submit():
song = Song(title=form.title.data, artist=form.artist.data, url=form.url.data)
db.session.add(song)
db.session.commit()
flash('Song added successfully!')
return redirect(url_for('home'))
return render_template('add.html', form=form)
```
7. 最后,我们需要创建一些模板文件,用于呈现页面。例如,我们可以创建一个 home.html 文件,用于显示所有的歌曲:
```html
{% extends 'base.html' %}
{% block content %}
<h1>Available Songs</h1>
<table class="table">
<thead>
<tr>
<th>Title</th>
<th>Artist</th>
<th>URL</th>
</tr>
</thead>
<tbody>
{% for song in songs %}
<tr>
<td>{{ song.title }}</td>
<td>{{ song.artist }}</td>
<td>{{ song.url }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
```
类似地,我们还可以创建一个 add.html 文件,用于添加歌曲。
这只是一个简单的校园点歌系统,您可以根据自己的需求进行修改和扩展。