通过主键在烧瓶中获取用户

时间:2014-12-27 18:05:07

标签: python flask jinja2 flask-sqlalchemy

我正在使用flask并且有一个html页面,其中包含从表中获取的用户名(user.html),现在如何通过单击每个用户(哪个路由到配置文件)来查看更多详细信息? 我没有使用登录app所以我不想使用g

  

app.py

# am I doing it right?
    @app.route('/profile/<int:id>')
    def profile(id=None):
     detail = Contacts.query.get(id)
      return render_template('profile.html', detail= detail , id=id)
  

user.html

{% extends "layout.html" %}
{% block content %}
     <h2>show user</h2>
         {% for contact in contact  %}

          # I got error when I click on each user name to see their 'profile' 
          #I guess because of id  How can Solve it?
          #error BuildError: ('profile', {}, None)
          <strong>name:</strong><a href={{url_for('profile')}}>
            {{ contact.name}}</a><br>

           {% endfor %}
       {% endblock %}
  

profile.html

{% extends "layout.html" %}
{% block content %}
     <h2>show user profile</h2>
     # how can I make it specific for each row of table(each user)?
         {% for detail in Contacts  %}
           <strong>name:</strong> {{ detail.name}} <br>
           <strong>email:</strong> {{ detail.email }} <br>
           <strong>age:</strong> {{ detail.age}} <br>
           <br>
           {% endfor %}

  {% endblock %}
  

model.py

class Contacts(db.Model):
   __tablename__ = "Contacts"
   id = db.Column(db.Integer, primary_key = True)
   name = db.Column(db.String(50))
   email = db.Column(db.String(50))
   age = db.Column(db.Integer)
    submit = SubmitField("Submit")

1 个答案:

答案 0 :(得分:0)

我注意到代码中有两件事:

# this
<a href={{url_for('profile')}}>

# should be
<a href={{url_for('profile', id=contact.id)}}>

# otherwise Flask can't find the route, because it needs an id

另一个:

{% for detail in Contacts  %}

模板中没有Contacts变量,因为您的视图功能不会发送它。只需摆脱循环并直接使用detail,因为它是您发送到模板的内容。