2017-11-15 2 views
-1

Ich experimentiere mit https://github.com/hack4impact/flask-base und versuche, ein sqlalchemy-Objekt an eine jinja2-Vorlage übergeben.Grundlegende Prozedur beim Übergeben von ORM-Objekt zu tempate

Mein Eigentumsmodell ist;

class Property(db.Model): 
    __tablename__ = 'properties' 
    id = db.Column(db.Integer, primary_key=True) 
    title = db.Column(db.String(140)) 
    body = db.Column(db.String(1400)) 
    img = db.Column(db.String(140)) 
    .... 

In meinem main/views.py ich habe:

from flask import render_template 
from app import db 
from app.models import Property 

from . import main 


@main.route('/') 
def index(): 
    props = db.session.query(Property).all() 
    return render_template('main/index.html') 

das verstehe ich eine Variable in eine Vorlage zu übergeben Sie tun würde:

return render_template('main/index.html', pr= props) 

jedoch versuchen:

>>> type(props[0]) 
<class 'app.models.property.Property'> 

Dies scheint wie der falsche Typ o f Objekt, das übergeben werden soll. Ich würde annehmen, dass Sie etwas allgemeineres wie eine Liste von Diktaten weitergeben würden. Was ist der beste Ansatz, um eine Liste von sqlalchemy-Objekten an eine jinja2-Vorlage zu übergeben?

+2

Warum glaubst du das? Sie können passieren, was Sie wollen. – syntonym

+0

Was lässt Sie glauben, dass es der falsche Typ ist? – PRMoureu

+0

Ich habe vielleicht falsch verstanden, aber es schien mir wahrscheinlicher, dass Menschen in allgemein verwendeten mehr generische Datenstrukturen (Listen, Diktate usw.) weitergegeben. Gibt es eine Best Practice für das, was in jinja2-Vorlagen weitergegeben wird? – user61629

Antwort

1

Jinja2 kann jede Art von Python-Objekt behandeln, das an den Template-Renderer übergeben wird, da es in Python geschrieben ist und speziell so funktionieren soll. Also, wenn Sie diese props Liste an render_template übergeben, wird es gut funktionieren.

können Sie Objektmethoden zugreifen und Attribute wie normal, und auch tun Iteration: „Ich gehe davon aus würden Sie würden wie eine Liste von dicts Somthing allgemeineren passieren“

{% for prop in pr %} 
    <p>Title: {{ prop.title }}</p> 
    <p>Body: {{ prop.body }}</p> 
    <img src="{{ prop.image }}" /> 
{% endfor %} 
Verwandte Themen