Python 类型错误:';int';对象在呈现Flask模板时不可编辑

Python 类型错误:';int';对象在呈现Flask模板时不可编辑,python,python-3.x,flask,Python,Python 3.x,Flask,我一直在尝试将我的呈现模板链接到我的代码,因为它试图呈现index.html。我遇到了一个:>TypeError:“int”对象不可编辑 我认为这与循环有关,以呈现MongoDB查询的输出。我已经单独检查了逻辑和它的功能,但是我显然缺少了一些与模板相关的东西。 我已经包括了模板、代码和跟踪 如果能给我一点提示,我将不胜感激 谢谢 模板-Index.html {% block header %} <h1>{% block title %}Contacts{% endblock %}&l

我一直在尝试将我的呈现模板链接到我的代码,因为它试图呈现index.html。我遇到了一个:>TypeError:“int”对象不可编辑

我认为这与循环有关,以呈现MongoDB查询的输出。我已经单独检查了逻辑和它的功能,但是我显然缺少了一些与模板相关的东西。 我已经包括了模板、代码和跟踪

如果能给我一点提示,我将不胜感激

谢谢

模板-Index.html

{% block header %}
<h1>{% block title %}Contacts{% endblock %}</h1>
  <a class="action" href="{{ url_for('contact.create') }}">New</a>
{% endblock %}

{% block content %}
{% for contact in contacts %}
  <article class="contact">
    <header>
      <div>
        <h1>{{ contact['fullName'] }}</h1>
      </div>
        <a class="action" href="{{ url_for('contact.update', id=contact['_id']) }}">Edit</a>
    </header>
    <p class="body">
        <div>
        <p>{{ contact['firstName'] }}</p>
        <p>{{ contact['lastName'] }}</p>
        <p>{{ contact['dateOfBirth'] }}</p>
        <p>{{ contact['generation'] }}</p>
        <p>{{ contact['region'] }}</p>
        <p>{{ contact['dateOfBirth'] }}</p>
        <p>{{ contact['interests'] }}</p>
        <p>{{ contact['relationships'] }}</p>
        </div>
    </p>
  </article>
  {% if not loop.last %}
    <hr>
  {% endif %}
{% endfor %}
{% endblock %}
痕迹


问题似乎在于我对MongoDB使用find方法的方式。我已将我的方法设置为要求传递筛选器参数,但是,我不需要为此查询使用任何特定筛选器。

在传递到模板之前检查
联系人的值。
。这可能是因为数据库调用的
.find()
方法未返回iterable对象。通过查看文档,您必须确保从中得到的实际上是一个可移植对象。或者你可以用jinja2做一个恶作剧,也就是说,你可以用这个条件
{%if contacts | length>1%}你的代码{%endif%}
from . import contact
from flask import (
    Blueprint, flash, redirect, render_template, request, url_for
)
from werkzeug.exceptions import abort

from .db_mongo.database import Database

ct = Blueprint('contact',__name__)

@ct.route('/')
def index():
    
    db = Database.initialize()
    contacts = Database.dbName.find('Contacts')
    render_template('contact/index.html',contacts=contacts)

 
@ct.route('/create', methods=('GET', 'POST'))
# @login_required
def create():
    if request.method == 'POST':
        firstName = request.form['firstName']
        lastName = request.form['lastName']
        birthCalDay = request.form['birthCalDay']
        birthCalMth = request.form['birthCalMth']
        birthCalYr = request.form['birthCalYr']
        region = request.form('region')
        error = None

        if not firstName:
            error = 'First name is required.'
        
        if not lastName:
            error = 'Last name is required.'

        if not birthCalDay:
            error = 'Calendar day of birth is required.'

        if not birthCalMth:
            error = 'Month of birth is required.'

        if not region:
            error = 'Region of contact is required.'

        if error is not None:
            flash(error)
        else:
            contact.__init__(firstName,lastName,birthCalDay,birthCalMth,birthCalYr,region)
            contact.createContact()
            return redirect(url_for('contact.index'))

    return render_template('blog/create.html', regionNames = [{'name':'Europe'},{'name':'Africa'},{'name':'Asia'},{'name':'North America'},{'name':'Central America'},{'name':'South America'},{'name':'Middle East'},{'name':'Oceania'}])

Traceback (most recent call last):
  File "C:\Python38\Lib\site-packages\flask\app.py", line 2464, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Python38\Lib\site-packages\flask\app.py", line 2450, in wsgi_app
    response = self.handle_exception(e)
  File "C:\Python38\Lib\site-packages\flask\app.py", line 1867, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Python38\Lib\site-packages\flask\_compat.py", line 39, in reraise
    raise value
  File "C:\Python38\Lib\site-packages\flask\app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Python38\Lib\site-packages\flask\app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Python38\Lib\site-packages\flask\app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Python38\Lib\site-packages\flask\_compat.py", line 39, in reraise
    raise value
  File "C:\Python38\Lib\site-packages\flask\app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Python38\Lib\site-packages\flask\app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "C:\Users\Kenneth\Documents\Projects\BirthdayAssist\app\contact.py", line 16, in index
    render_template('contact/index.html',contacts=contacts)
  File "C:\Python38\Lib\site-packages\flask\templating.py", line 137, in render_template
    return _render(
  File "C:\Python38\Lib\site-packages\flask\templating.py", line 120, in _render
    rv = template.render(context)
  File "C:\Python38\Lib\site-packages\jinja2\environment.py", line 1090, in render
    self.environment.handle_exception()
  File "C:\Python38\Lib\site-packages\jinja2\environment.py", line 832, in handle_exception
    reraise(*rewrite_traceback_stack(source=source))
  File "C:\Python38\Lib\site-packages\jinja2\_compat.py", line 28, in reraise
    raise value.with_traceback(tb)
  File "C:\Users\Kenneth\Documents\Projects\BirthdayAssist\app\templates\contact\index.html", line 7, in top-level template code
    {% block content %}
  File "C:\Users\Kenneth\Documents\Projects\BirthdayAssist\app\templates\contact\index.html", line 8, in block "content"
    {% for contact in contacts %}
  File "C:\Python38\Lib\site-packages\jinja2\runtime.py", line 403, in __init__
    self._iterator = self._to_iterator(iterable)
  File "C:\Python38\Lib\site-packages\jinja2\runtime.py", line 411, in _to_iterator
    return iter(iterable)
TypeError: 'int' object is not iterable