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