flask实现通过查询展示数据库中全部相关视频,并可点选播放,写一段代码
时间: 2024-03-03 19:50:59 浏览: 24
好的,以下是一个简单的 Flask 应用示例,可以实现查询数据库中的相关视频,并展示在页面上。用户可以输入关键字进行查询,点击视频链接即可播放。
前提条件是必须要安装 Flask 和 pymysql 相关的扩展包。
```python
# 导入需要的模块
from flask import Flask, render_template, request
from flask_sqlalchemy import SQLAlchemy
# 创建 Flask 应用实例
app = Flask(__name__)
# 配置数据库连接地址
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@hostname/database'
# 创建数据库实例
db = SQLAlchemy(app)
# 定义视频模型
class Video(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(50), nullable=False)
url = db.Column(db.String(100), nullable=False)
# 定义搜索路由
@app.route('/search', methods=['GET', 'POST'])
def search():
if request.method == 'POST':
keyword = request.form.get('keyword')
videos = Video.query.filter(Video.title.like('%{}%'.format(keyword))).all()
else:
videos = Video.query.all()
return render_template('search.html', videos=videos)
# 定义播放路由
@app.route('/play/<int:video_id>')
def play(video_id):
video = Video.query.get(video_id)
return render_template('play.html', video=video)
# 运行应用
if __name__ == '__main__':
app.run(debug=True)
```
在这个应用中,定义了一个 Video 模型,并且创建了两个路由,分别用于搜索视频和播放视频。具体实现如下:
在搜索路由中,通过判断请求的方法(GET 或 POST)来处理搜索关键字。如果是 POST 方法,就从表单中获取关键字,然后使用 `like` 方法查询包含该关键字的视频记录;如果是 GET 方法,就查询所有视频记录。最后,将查询结果传递给模板,渲染页面展示。
```python
@app.route('/search', methods=['GET', 'POST'])
def search():
if request.method == 'POST':
keyword = request.form.get('keyword')
videos = Video.query.filter(Video.title.like('%{}%'.format(keyword))).all()
else:
videos = Video.query.all()
return render_template('search.html', videos=videos)
```
在播放路由中,通过视频的 ID 查询对应的视频记录,并将其传递给模板,渲染页面展示。
```python
@app.route('/play/<int:video_id>')
def play(video_id):
video = Video.query.get(video_id)
return render_template('play.html', video=video)
```
最后,还需要创建两个模板文件 `search.html` 和 `play.html`,用于展示搜索结果和播放视频。具体实现可以根据实际需求进行定制,以下是一个简单的示例:
`search.html`:
```html
<!DOCTYPE html>
<html>
<head>
<title>Search Videos</title>
</head>
<body>
<form method="post">
<input type="text" name="keyword" placeholder="Enter keyword">
<button type="submit">Search</button>
</form>
<ul>
{% for video in videos %}
<li><a href="/play/{{ video.id }}">{{ video.title }}</a></li>
{% endfor %}
</ul>
</body>
</html>
```
`play.html`:
```html
<!DOCTYPE html>
<html>
<head>
<title>Play Video</title>
</head>
<body>
<h1>{{ video.title }}</h1>
<video src="{{ video.url }}" controls></video>
</body>
</html>
```
这样,就可以通过浏览器访问应用,进行视频搜索和播放了。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)