簡體   English   中英

flask提交數據報錯如何處理

[英]How to handle error when submitting data in flask

當通過用戶輸入提交數據並且數據與 mongodb collections 中的任何內容不匹配時,Jinja 模板拋出錯誤(TypeError: 'NoneType' ZA8CFDE6331BD59EB2AC96F89111C4B666Z 中沒有任何現有數據的模板)問題,我不知道如何處理這個錯誤。 以及如何在提交后刷新頁面,因為重新加載頁面后搜索輸入的結果不會消失。 任何幫助將不勝感激,並提前感謝。

這是我的 Python 代碼:

import os
from datetime import datetime
from flask import (
    Flask, flash, render_template,
    redirect, request, session, url_for)
from flask_pymongo import PyMongo
from bson.objectid import ObjectId
from werkzeug.security import generate_password_hash, check_password_hash
if os.path.exists("env.py"):
    import env


app = Flask(__name__)


app.config["MONGO_DBNAME"] = os.environ.get("MONGO_DBNAME")
app.config["MONGO_URI"] = os.environ.get("MONGO_URI")
app.secret_key = os.environ.get("SECRET_KEY")


mongo = PyMongo(app)


@app.route("/")
@app.route("/home", methods=["GET", "POST"])
def home():
    return render_template("home.html")


@app.route("/search", methods=["GET", "POST"])
def search():
    query = request.form.get("company-name")
    company = mongo.db.company.find_one(
        {"company_name": query})["company_name"]
    if company:
        review = list(mongo.db.review.find({"company_name": company}))
    else:
        return redirect(url_for("home"))
    return render_template("home.html", review=review)

html 金賈模板

    <form class="serach-form" method="POST" action="{{ url_for('search') }}">
        <label class="search-bar-label" name="company-name" for="company- 
              name">Company Name</label>
            <input type="text" id="company-name" name="company-name">
            <button class="serch-button btn light-blue accent-4" type="submit" 
              name="action"><span>Search</span>
                <i class="fas fa-sign-in-alt sign-in-icon"></i><i class="fas fa- 
              search search-icon"></i>
            </button>
    </form>

<div>
    {% if review|length > 0 %}
        {% for set in review %}
            <strong>{{ set.company_name }}</strong> <br>
            <strong>{{ set.username }}</strong><br>
            <strong>{{ set.score }}</strong><br>
            <strong>{{ set.review_content }}</strong><br>           
        {% endfor %} 
    {% else %}
        <h3 class="red-text text-darken-4 center-align">No Results Found</h3>
    {% endif %}       
        
</div>

利用

try:
  // task1
except:
  // executed when there's runtime error while doing task1

我找到了解決方案,但我仍然不知道我編寫的代碼有什么問題。

python代碼

@app.route("/search", methods=["GET", "POST"])
def search():
    query = request.form.get("company-name")
    review = list(mongo.db.review.find(
        {"company_name": query}))
    return render_template("home.html", query=query, review=review)


html :
<div id="review-search">
{% if review|length > 0 %}
<h2 class="black-text text-darken-4 center-align review-search- 
     heading">Results for  <span class="found"> {{ query }} </span> 
</h2>
<h3> total {{ total_score }}</h3>

    {% for set in review %}
    <div class="row top-margin hot-company">
        <div class="col m8 s10 offset-m2 offset-s1 grey lighten-5">
            <div class="row">
                <div class="col s10 offset-s1 blue-text">
                    <h5>{{ set.username }}</h5>
                </div>
            </div>
            <div class="row">
                <div class="col s10 offset-s1 red-text">
                    <p>{{ set.score }}/10</p>
                </div>
            </div>
            <div class="row">
                <div class="col s10 offset-s1">
                    <p>{{ set.review_content }}</p>
                </div>
            </div>
        </div>
    </div>     
    {% endfor %}
{% else %}
    <h2 class="red-text text-darken-4 center-align review-search- 
         heading">No Results Found for   <span> "{{ query }}"</span> 
    </h2>
{% endif %}
</div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM