【发布时间】:2015-07-12 07:01:47
【问题描述】:
我是 Flask 和 SQLalchemy 的新手。想要有一张带有单独照片的网页,显示分配给该照片的所有标签。
我的 SQLalchemy 可以在 MYSQL 数据库中正常工作。很好地检索记录等。
我需要有关烧瓶/SQLalchemy 工作流程的帮助:
模型 -> 视图(从 url 输入,例如视图/照片 ID)-> 模板 -> 网页
型号如下:
class Photos(db.Model):
id = db.Column(db.Integer, primary_key=True)
filename = db.Column(db.String(100))
tags = db.relationship(
'Tags',
secondary=photo_tags,
backref='photos')
class Tags(db.Model):
id = db.Column(db.Integer, primary_key=True)
tagname = db.Column(db.String(100))
photo_tags = db.Table('photo_tags',
db.Column('tag_id', db.Integer, db.ForeignKey('tags.id')),
db.Column('photo_id', db.Integer, db.ForeignKey('photos.id'))
)
我的看法如下:
@app.route('/phototags/<int:id>')
#@login_required
def phototags(id=None):
photo_tags = Tags.query.filter(Tags.photos).filter(id == id).all()
return render_template(
'phototags.html',
title='PhotoTags',
message='Your application description page.',
photo_tags = photo_tags
)
我的模板如下:
{% extends "layout.html" %}
{% block content %}
<h2>{{ title }}.</h2>
<h3>{{ message }}</h3>
{% for phototag in photo_tags %}
<div style="float:left; class=" img-responsive">
<p><a href="{{ url_for('photo', id=phototag.id)}}">photo</a></p>
<p><a href="{{ url_for('tag', id=phototag.id)}}"></p>tag</a></p>
<img src="static/photos/{{ phototag.id }}" width="100" height="100">
</div>
{% endfor %}
{% endblock %}
我很确定模型和关联表/模型设置正确。
该模板并不完美,因为它目前似乎显示照片 ID 的标签 ID。我试过做'phototag.photo_id'或'phototag.filename'但没有出来。显然视图查询并没有通过。
所以视图是我需要帮助的。查询是否正确?是否正确获取了 photo_id 的 url 传递参数?
我的测试数据很简单。我有一个带有 photos.id = 1 的照片记录
这有 2 条相关的 Phototags 记录:phototags.id = 1 (tag.id = 1)、phototags.id = 2 (tag.id = 2)
当我传递 url http://localhost:5555/phototags/1 时,我的视图查询传递了标签 id,但更改传递的参数总是得到相同的标签 id,例如 phototags/2 也得到相同的两个标签。所以查询显然是不正确的。
我查看了许多示例,它们都与我想要的略有不同。我见过的示例/教程/SO问题/答案都没有显示模型、视图和模板如何协同工作以获得我想要的。它们是:
- 得到相反的结果,例如按标签相当于照片(希望按照片标签)
- 只是通过照片获取标签的查询(我什至不认为我明白了)
- 有另一个 SQLalchemy 表示法,其中包括“会话”或“基础”而不是“db.model”
我想要输出的是照片 ID,因此我可以显示照片及其名称等,还可以显示与该照片关联的标签列表,例如逗号分隔列表。
我很难找到一个演示/示例/教程/github 项目来引导我完成工作流程所需的内容。
谁能告诉我可以从 url 参数获取照片 id 然后查询我的模型以获取关联标签的视图示例?
【问题讨论】:
标签: python flask flask-sqlalchemy