[英]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.