So I am trying to display a table from my db on my web app. however when I run the program, I get all of my data on 1 row instead of lined up in the proper columns. Parts of my HTML and Python code is below. I am using pythonanywhere to launch my web app. Any advice on where I am messing up?
ID.HTML
<table style="margin-left: 20px;">
<!-- Table headers -->
<th>
<tr style="color: black; ">
<th>Last Name</th>
<th>First Name</th>
<th>SSN</th>
<th>MRN</th>
<th>Age</th>
<th>Sex</th>
<th>Incounter Type</th>
<th>Provider Last Name</th>
<th>Provider First Name</th>
<th>Admin Date</th>
<th>Admin Time</th>
<th>Hospital</th>
<th>Floor</th>
<th>Room</th>
<th>Bed</th>
</tr>
</th>
<tr>
{%for patient_id in query%}
<td>
{{patient_id.lname}}
</td>
<td>
{{patient_id.fname}}
</td>
<td>
{{patient_id.ssn}}
</td>
<td>
{{patient_id.mrn}}
</td>
<td>
{{patient_id.age}}
</td>
<td>
{{patient_id.sex}}
</td>
<td>
{{patient_id.incounter_type}}
</td>
<td>
{{patient_id.provider_lname}}
</td>
<td>
{{patient_id.provider_fname}}
</td>
<td>
{{patient_id.admin_date}}
</td>
<td>
{{patient_id.admin_time}}
</td>
<td>
{{patient_id.location_hospital}}
</td>
<td>
{{patient_id.location_floor}}
</td>
<td>
{{patient_id.location_room}}
</td>
<td>
{{patient_id.location_bed}}
</td>
{%endfor%}
</tr>
</table>
flask_app.py
class patient_ID(db.Model):
__tablename__ = "patient_ID"
incounter_types = [('inpatient', 'inpatient'),
('outpatient', 'outpatient')
]
lname = db.Column(db.String(128))
fname = db.Column(db.String(128))
ssn = db.Column(db.String(9))
mrn = db.Column(db.String(8),primary_key=True)
age = db.Column(db.String(3))
sex = db.Column(db.String(6))
incounter_type = db.Column(db.String(128))#, choices=incounter_types)
provider_lname = db.Column(db.String(128))
provider_fname = db.Column(db.String(128))
admin_date = db.Column(db.String(128))
admin_time = db.Column(db.String(128))
location_hospital = db.Column(db.String(128))
location_floor = db.Column(db.String(3))
location_room = db.Column(db.String(10))
location_bed = db.Column(db.String(1))
@app.route("/Patient_Info/", methods=["GET", "POST"])
@login_required
def patient_info_page():
if request.method == "GET":
return render_template("ID.html", query=patient_ID.query.all())
if not current_user.is_authenticated:
return redirect(url_for('index'))
ID = patient_ID(mrn=request.form["mrns"])
return redirect(url_for('patient_info_page'), query)
The for loop needs to be outside of the 'tr'-html tags. You want a row for each patient, so write:
{% for patient_id in query %}
<tr>
<td>
{{patient_id.lname}}
</td>
...
</tr>
{% endfor %}