繁体   English   中英

创建数据库时 Jinja 变量未定义错误

[英]Jinja variable undefined error while creating database

我正在尝试使用 2 种类型的用户(管理员和患者)创建一个 web 应用程序数据库。

我也是 Python 和 Flask 的新手。

我已经完成了关于 Admin 的部分,现在我正在做 Patient 部分。

我正在尝试从基于 patient_id 的导航栏访问 user_records.html。 (如果您想知道什么是患者 ID,请参见下图)

这样做时,我遇到了一个未定义的错误变量。 我尝试调试但没有运气,现在我想寻求一些帮助,如果你能找到并告诉我是什么导致了错误。

Jinja 未定义错误:

UndefinedError
jinja2.exceptions.UndefinedError: 'patients' is undefined

这是我的一些代码。

base.html(包括导航栏)

<a class="nav-item nav-link" id="home2" href="/">Home</a>
<a class="nav-item nav-link" id="profile" href="/user/user_profile">Profile</a>
<a class="nav-item nav-link" id="Records" href="/user/user_records/{{patients.id}}">Records</a>
<a class="nav-item nav-link" id="logout" href="/logout">Logout</a>

视图.py

@views.route('/user/user_records/<int:patient_id>', methods=['GET', 'POST'])
@login_required
def user_records(patient_id):
patient_id = Views.query.get_or_404(patient_id=patient_id)
if request.method == 'POST':

    name = request.form.get('name')
    note = request.form.get('note')
    doctor = request.form.get('doctor')
    validated = request.form.get('validated')
    date = request.form.get('date')
    tdate = datetime.datetime.strptime(date, '%Y-%m-%d').date()
    file = request.files['file']

    flash('Added successfully', 'success')
    new_view = Views(patient_id=patient_id, name=name, note=note, doctor=doctor, validated=validated, date=tdate, filename=file.filename, data=file.read())
    db.session.add(new_view)
    db.session.commit()
    
view_list = Views.query.filter_by(patient_id=patient_id)
return render_template("user_records.html", user=current_user, view_list=view_list)

用户记录.html

<table class="table table-hover table dark">
                        <tr>
                            <th>Date</th>
                            <th>Name</th>
                            <th>Note Type</th>
                            <th>Doctor</th>
                            <th>Validated</th>
                            <th>Actions</th>
                        </tr>
                        {% for rec in rec_list %}
                        <tr>
                            <td>{{ rec.date }}</td>
                            <td>{{ rec.name }}</td>
                            <td>{{ rec.note }}</td>
                            <td>{{ rec.doctor }}</td>
                            <td>{{ rec.validated }}</td>
                            <td width="150">
                                <a href=""><i class="bi bi-eye" style="color: black; font-size:20px;"></i></a>&emsp;*emphasized text*
                                <a href="" value="delete" onclick="return confirm('Are you sure you want to delete?')"><i style="color: black; font-size:20px;" class="bi bi-trash3"></i></a>&emsp;
                                <a href="" value="download"><i style="color: black; font-size:20px;" class="bi bi-download"></i></a>&emsp;
    
                            </td>
                        </tr>
                        {% endfor %}
    
                    </table>

models.py(这里是我们获取 patient_id 的部分)

class Patients(db.Model):
     id = db.Column(db.Integer, primary_key=True)
     lname = db.Column(db.String(150))
     fname = db.Column(db.String(150))
     mname = db.Column(db.String(150))
     gender = db.Column(db.String(150))
     age = db.Column(db.String(150))
     phone = db.Column(db.String(150))
     email = db.Column(db.String(150))
     date = db.Column(db.DateTime(timezone=True))
     bday = db.Column(db.DateTime(timezone=True))
     mstatus = db.Column(db.String(150)) 
     address = db.Column(db.String(150))
     phid = db.Column(db.String(150))
     views = db.relationship('Views', backref='patients')

class Views(db.Model):
     id = db.Column(db.Integer, primary_key=True)
     name = db.Column(db.String(150))
     note = db.Column(db.String(150))
     doctor = db.Column(db.String(150))
     validated = db.Column(db.String(150))
     date = db.Column(db.DateTime(timezone=True))
     data = db.Column(db.LargeBinary)
     filename = db.Column(db.String(50))
     patient_id = db.Column(db.Integer, db.ForeignKey('patients.id'))

我希望你能帮我调试错误:)!

您在此处的基本模板中使用变量patients.id

<a class="nav-item nav-link" id="Records" href="/user/user_records/{{patients.id}}">Records</a>

我没有在代码中的任何地方看到您将模板传递给名为 patients 的 object。 您是说user.id吗?

我还看到您在user_records.html rec_list 你的意思是参考你通过的view_list object?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM