如何纠正pymongo.errors.InvalidOperation:在开发服务器上运行我的app.py时执行查询后无法设置选项

问题描述

当我运行 jargon.html editjargon.html 模板页面时, app.py 文件。我的项目是使用 Materialize Flask MongoDB地图集作为数据库的圣语行话。


下面是 jargon.html 模板页面,该页面具有一个链接 editjargon.html 模板页面

的按钮

jargon.html 模板页面

<!DOCTYPE html>

{% extends 'base.html' %}

{% block title %}browse Jargon by scrolling{% endblock title %}

<!-- Block Content starts here -->
{% block content %}
    <!-- Block Header content starts here -->
    {% block header %}
        <p class="flow-text">browse the Jargon by scrolling below.</p>
    {% endblock header %}
    <!-- Block Header content ends here -->
    <!-- Main content starts here -->
    {% block main %}
        <div class="row">
            {% for jar in jargon %}
                <article>
                    <h1 class="center-align">Jargon</h1>
                    <div class="row">
                        <div class="col s12">
                            <p class="flow-text">
                                <em>{{jar.category_name}}</em>
                            </p>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col s12">
                            <p class="flow-text">
                                <strong>{{jar.word}}</strong>
                            </p>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col s12">
                            <p class="flow-text">
                                <strong style="color: #3e2723;">DeFinition:</strong> <em>{{jar.deFinition}}</em>
                            </p>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col s12">
                            <p class="flow-text">
                                <strong style="color: #1b5e20;">Meaning:</strong> <em>{{jar.meaning}}</em>
                            </p>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col s12">
                            <p class="flow-text">
                                <strong>Synonyms:</strong> {{jar.synonyms}}
                            </p>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col s12">
                            <p class="flow-text">
                                <strong>Opposite:</strong> {{jar.antonyms_or_opposite}}
                            </p>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col s12">
                            <p class="flow-text">
                                <strong>Part of Speech:</strong> {{jar.part_of_speech}}
                            </p>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col s12">
                            <p class="flow-text">
                                <strong>Alphabet:</strong> {{jar.alphabets}}
                            </p>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col s12">
                            <p class="flow-text">
                                <strong>Date Added:</strong> {{jar.date_added}}
                            </p>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col s3 m2 l1 xl1">
                            <a href="{{url_for('edit_jargon',jargon_id=jargon._id)}}"
                                class="waves-effect waves-light btn btn_small deep-purple darken-4"
                                style="color: #fff59d; font-weight: 600;">Edit</a>
                        </div>
                    </div>
                </article>
            {% endfor %}
        </div>
    {% endblock main %}
    <!-- Block Main content ends here -->
{% endblock %}
<!-- Block content ends here -->

editjargon.html 模板页面

<!DOCTYPE html>

{% extends 'base.html' %}

{% block title %}Edit jargon{% endblock title %}

<!-- Block Content starts here -->
{% block content %}
    <!-- Block Header content starts here -->
    {% block header %}
        <p class="flow-text">
            Your contribution towards the growth of <em>sheng</em> is warmly and greatly
            encouraged. This can be done by simply filling the form below. Keep in mind that
            through your contribution we can expand the family of sheng speakers and in turn provide
            context when expressing ourselves using the sheng lingo.
        </p>
    {% endblock header %}
    <!-- Block Header content ends here -->
    <!-- Block Main content starts here -->
    {% block main %}
        <div class="row">
            <article>
                <h2>Edit jargon</h2>
                <form action="{{ url_for('update_jargon',jargon_id=jargon._id) }}" method="POST">
                    <fieldset>
                        <legend>Edit jargon form</legend>
                        <div class="row">
                            <div class="input-field col s12">
                                <i class="material-icons prefix" style="color: #311b92;">format_list_bulleted</i>
                                <select id="category" name="category_name">
                                    <option value="" disabled selected>Choose your option</option>
                                    <option value="{{cat.catergory_name}}">{{cat.category_name}}</option>
                                </select>
                                <label>Category</label>
                            </div>
                        </div>
                        <div class="row">
                            <div class="input-field col s12">
                                <i class="material-icons prefix" style="color: #311b92;">edit</i>
                                <input id="jargon" name="jargon" type="text" class="validate" value="{{word}}">
                                <label for="jargon">Jargon</label>
                            </div>
                        </div>
                        <div class="row">
                            <div class="input-field col s12 m6 l6 xl6">
                                <i class="material-icons prefix" style="color: #311b92;">edit</i>
                                <input id="jargon-deFinition" name="jargon-deFinition" type="text" class="validate"
                                    data-length="200" value="{{deFinition}}">
                                <label for="jargon-deFinition">DeFinition of Word or Expression</label>
                                <span class="helper-text" data-error="wrong" data-success="right">DeFinition of the word
                                    or expression in English.</span>
                            </div>
                        </div>
                        <div class="input-field col s12 m6 l6 xl6">
                            <i class="material-icons prefix" style="color: #311b92;">edit</i>
                            <input id="jargon-meaning" name="jargon-meaning" type="text" class="validate"
                                data-length="200" value="{{meaning}}">
                            <label for="jargon-meaning">Meaning of Word or Expression</label>
                            <span class="helper-text" data-error="wrong">Meaning of the word or expression in
                                English.</span>
                        </div>
                        <div class="row">
                            <div class="input-field col s12">
                                <i class="material-icons prefix" style="color: #311b92;">edit</i>
                                <input id="jargon-synonym" name="jargon-synonym" type="text" class="validate"
                                    value="{{synonyms}}">
                                <label for="jargon-synonym">Synonyms of the word or expression</label>
                                <span class="helper-text" data-error="wrong" data-success="right">Words or expression
                                    with a similar meaning e.g. <em>1<sup>st</sup> synonym,2<sup>nd</sup> synonym,...</em></span>
                            </div>
                        </div>
                        <div class="row">
                            <div class="input-field col s12">
                                <i class="material-icons prefix" style="color: #311b92;">edit</i>
                                <input id="jargon-antonyms" name="jargon-antonyms" type="text" class="validate"
                                    value="{{antonyms_or_opposite}}">
                                <label for="jargon-antonyms">Opposites of the word or expression</label>
                                <span class="helper-text" data-error="wrong" data-success="right">Words or
                                    expression with a similar meaning e.g. <em>1<sup>st</sup> synonym,...</em></span>
                            </div>
                        </div>
                        <div class="row">
                            <div class="input-field col s12">
                                <i class="material-icons prefix" style="color: #311b92;">format_list_bulleted</i>
                                <select id="part-of-speech" name="category_name">
                                    <option value="" disabled selected>Choose your option</option>
                                    <option value="{{part_of_speech}}">{{part_of_speech}}</option>
                                </select>
                                <label>Part of Speech</label>
                            </div>
                        </div>
                        <div class="row">
                            <div class="input-field col s12">
                                <i class="material-icons prefix" style="color: #311b92;">edit</i>
                                <input id="jargon-alphabet" name="jargon-synonym" type="text" class="validate"
                                    value="{{alphabets}}">
                                <label for="jargon-alphabet">Alphabet of the word or expression</label>
                                <span class="helper-text" data-error="wrong" data-success="right">Write the first
                                    alphabet of the word or expression <em>e.g. "Kata tamaa - Kk","Bonga -
                                        Bb"...</em></span>
                                <br>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col s12">
                                <i class="material-icons prefix" style="color: #311b92;">date_range</i>
                                <input id="input-date-added" name="input-date-added" type="text" class="datepicker"
                                    value="{{date_added}}">
                                <label for="input-date-added">Date of the day the word or expression was added.</label>
                            </div>
                        </div>
                        <div class="row">
                            <button class="btn waves-effect waves-light deep-purple darken-4" style="color: #fff59d;"
                                type="submit" name="action">Update Jargon
                                <i class="material-icons right">playlist_add</i>
                            </button>
                            <a href="{{ url_for('delete_jargon') }}"
                                class="waves-effect waves-light btn deep-purple darken-4"
                                style="color: #fff59d;">
                                <i class="material-icons right" style="color: #fff59d;">delete</i>Delete
                            </a>
                            <a href="{{ url_for('browse_jargon') }}" class="waves-effect waves-light btn deep-purple darken-4"
                                style="color: #fff59d;">
                                <i class="material-icons right" style="color: #fff59d;">cancel</i>Cancel
                            </a>
                        </div>
                    </fieldset>
                </form>
            </article>
        </div>
    {% endblock main %}
    <!-- Block Main content ends here -->
{% endblock %}
<!-- Block content ends here -->

这是当我加载页面时在浏览器窗口中显示 Traceback 消息。

Traceback (most recent call last):
  File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\venv\Lib\site-packages\flask\app.py",line 2464,in __call__
    return self.wsgi_app(environ,start_response)
  File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\venv\Lib\site-packages\flask\app.py",line 2450,in wsgi_app
    response = self.handle_exception(e)
  File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\venv\Lib\site-packages\flask\app.py",line 1867,in handle_exception
    reraise(exc_type,exc_value,tb)
  File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\venv\Lib\site-packages\flask\_compat.py",line 39,in reraise
    raise value
  File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\venv\Lib\site-packages\flask\app.py",line 2447,in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\venv\Lib\site-packages\flask\app.py",line 1952,in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\venv\Lib\site-packages\flask\app.py",line 1821,in handle_user_exception
    reraise(exc_type,line 1950,in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\venv\Lib\site-packages\flask\app.py",line 1936,in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\app.py",line 37,in browse_jargon
    return render_template("jargon.html",File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\venv\Lib\site-packages\flask\templating.py",line 137,in render_template
    return _render(
  File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\venv\Lib\site-packages\flask\templating.py",line 120,in _render
    rv = template.render(context)
  File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\venv\Lib\site-packages\jinja2\environment.py",line 1090,in render
    self.environment.handle_exception()
  File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\venv\Lib\site-packages\jinja2\environment.py",line 832,in handle_exception
    reraise(*rewrite_traceback_stack(source=source))
  File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\venv\Lib\site-packages\jinja2\_compat.py",line 28,in reraise
    raise value.with_traceback(tb)
  File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\templates\jargon.html",line 3,in top-level template code
    {% extends 'base.html' %}
  File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\templates\base.html",line 70,in top-level template code
    {% block content %}
  File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\templates\jargon.html",line 15,in block "content"
    {% block main %}
  File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\templates\jargon.html",line 85,in block "main"
    <a href="{{url_for('edit_jargon',jargon_id=jargon._id)}}"
  File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\venv\Lib\site-packages\jinja2\environment.py",line 475,in getattr
    return obj[attribute]
  File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\venv\Lib\site-packages\pymongo\cursor.py",line 612,in __getitem__
    self.__check_okay_to_chain()
  File "C:\Users\madib\OneDrive\Desktop\sheng-jargon-application\venv\Lib\site-packages\pymongo\cursor.py",line 401,in __check_okay_to_chain
    raise InvalidOperation("cannot set options after executing query")
pymongo.errors.InvalidOperation: cannot set options after executing query 

这是 appy.py 文件中编写的 jargon.html editjargon.html 模板的@app.route

@app.route('/browse_jargon/',endpoint='browse_jargon')
def browse_jargon():
    jargon = mongo.db.jargon.find()
    return render_template("jargon.html",jargon=jargon)


@app.route('/edit_jargon/<jargon_id>')
def edit_jargon(jargon_id):
    the_jargon =  mongo.db.jargon.find_one({"_id": ObjectId(jargon_id)})
    all_categories =  mongo.db.categories.find()
    return render_template('editjargon.html',task=the_jargon,categories=all_categories)

如何解决错误并使页面按预期加载?详细的说明将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)