Flask - jinja2.exceptions.UndefinedError: «сотрудник» не определен - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть страница, которая отображает Employees Masterlist, и я хотел сделать это, когда я нажал Employee No., чтобы просмотреть расписание этого сотрудника.

Я попытался использовать это в результате моего исследования.

По моему routes.py

@app.route("/employee/<int:employee_id>")
def employee(employee_id):
  employee = Employee.query.get_or_404(employee_id)
  return render_template('emp_timesheet.html', employee=employee)

Вот мой masterlist.html

{% extends 'header.html' %}

{% block content %}
<table width="100%" class="table table-striped table-bordered table-hover" id="dataTables-example">
    <thead>
        <tr>
            <th>Employee Number</th>
            <th>Name</th>
            <th>Contract</th>
            <th>Position</th>
            <th>Salary</th>
        </tr>
    </thead>
    <tbody>
        {% for employee in list_employee %}
        <tr class="odd gradeX">
            <td><a href="{{ url_for('employee', employee_id=employee.id) }}">{{ employee.employee_number }}</a></td>
            <td>{{ employee.last_name }}, {{ employee.first_name }}</td>
            <td>{{ employee.contract }}</td>
            <td class="center">{{ employee.title }}</td>
            <td class="center">{{ employee.salary }}</td>
        </tr>
        {% endfor %}
    </tbody>
</table>

{% endblock %}

Но я получаю эту ошибку:

File "/home/jxmtsi/Desktop/flask_training/rep/templates/header.html", line 293, in top-level template code
{% block content %}{% endblock %}
File "/home/jxmtsi/Desktop/flask_training/rep/templates/masterlist.html", line 27, in block "content"
<td><a href="{{ url_for('employee', employee_id=employee.id) }}">{{ employee.employee_number }}</a></td>  
File "/home/jxmtsi/.local/lib/python3.6/site-packages/jinja2/environment.py", line 430, in getattr
return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'employee' is undefined

1 Ответ

0 голосов
/ 20 сентября 2018

Я думаю, что проблема в вашем коде Python, точнее в связи между вашим приложением и базой SQL.Или, может быть, у вас нет в базе данных SQL данных о запрошенном employee_id.

Проверьте, получает ли переменная employee в методе employee (employee_id) данные из вашей базы данных.Например, попробуйте print(employee.last_name):

@app.route("/employee/<int:employee_id>")
def employee(employee_id):
  employee = Employee.query.get_or_404(employee_id)
  print(employee.last_name) # or print other value from table (Model) Employee
  # print(employee.id)
  return render_template('emp_timesheet.html', employee=employee)
...