Python jinja2.exceptions.TemplateNotFound:/register

Python jinja2.exceptions.TemplateNotFound:/register,python,flask,Python,Flask,我得到这个错误,即使我是渲染模板。我还尝试更改函数名 我想这是因为flaskerror 回溯最近一次呼叫上次: 文件/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/app.py,第2463行,呼叫中 返回self.wsgi\u appenviron,启动\u响应 wsgi_应用程序中的文件/Users/ayyagari/Documents/DeepNews/web_2/venv/lib

我得到这个错误,即使我是渲染模板。我还尝试更改函数名

我想这是因为flaskerror

回溯最近一次呼叫上次: 文件/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/app.py,第2463行,呼叫中 返回self.wsgi\u appenviron,启动\u响应 wsgi_应用程序中的文件/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/app.py,第2449行 响应=self.handle\u异常一 文件/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/app.py,第1866行,在handle_异常中 reraiseexc_类型、exc_值、tb 文件/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask//u compat.py,第39行,在reraise中 增值 wsgi_应用程序中的文件/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/app.py,第2446行 响应=自满调度请求 文件/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/app.py,第1951行,完整发送请求 rv=自我处理\用户\例外一 文件/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/app.py,第1820行,在handle_user_异常中 reraiseexc_类型、exc_值、tb 文件/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask//u compat.py,第39行,在reraise中 增值 文件/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/app.py,第1949行,完整发送请求 rv=自我分派请求 文件/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/app.py,第1935行,发送请求中 返回self.view\u函数rule.endpoint 文件/Users/ayyagari/Documents/DeepNews/web_2/website/main.py,第57行,在register_user中 返回“main.register\u表单”的呈现模板URL 文件/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/templating.py,第138行,位于渲染模板中 ctx.app.jinja_env.get_或_select_templatetemplate_name_或_list, 文件/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/jinja2/environment.py,第869行,在get_或_select_模板中 返回self.get\u templatetemplate\u name\u或\u list、parent、globals 文件/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/jinja2/environment.py,第830行,在get_模板中 返回self.\u加载\u模板名称,self.make\u全局全局全局 文件/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/jinja2/environment.py,第804行,在加载模板中 template=self.loader.loadself,name,globals 文件/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/jinja2/loaders.py,第113行,装入 source,filename,uptodate=self.get\u sourceenvironment,name 文件/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/templating.py,第60行,在get_source中 返回self.\u获取\u源\u快速环境,模板 文件/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/templating.py,第89行,快速获取源代码 提升模板NotFoundTemplate jinja2.exceptions.TemplateNotFound:/register


Here is my code 


from flask import (
    Blueprint, redirect, render_template, request, url_for,
    flash)

from website.db import get_db

bp = Blueprint('main', __name__)


@bp.route('/home')
def index():
    return render_template("index.html")


@bp.route('/register')
def register_form():
    return render_template("form.html")


@bp.route('/success')
def success():
    return render_template("response.html")


@bp.route('/register_user', methods=["POST"])
def register_user():
    if request.method == 'POST':
        email_id = request.form['reg-email']
        company = request.form['reg-company']
        type_of_business = request.form['industry_type']
        checkbox = request.form['reg-check']
        db = get_db()
        error = None
        if not email_id:
            error = 'Email ID is required.'
        elif not company:
            error = 'Company is required.'
        elif not type_of_business:
            error = 'Type of Business is required.'
        elif not checkbox:
            error = 'Accept the Terms and Conditions'
        elif db.execute(
                'SELECT id FROM beta_users WHERE email_id = ?', (email_id,)
        ).fetchone() is not None:
            error = 'User {} is already registered.'.format(email_id)

        if error is None:
            db.execute(
                'INSERT INTO beta_users (email_id, company, type_of_org, checkbox) VALUES (?, ?, ?, ?)',
                (email_id, company, type_of_business, checkbox)
            )
            db.commit()
            return redirect(url_for('main.success'))

        flash(error)

    return render_template(url_for('main.register_form'))


@bp.route('/error')
def errors():
    return render_template("404.html")
API还显示了一个500内部服务器错误

问题在于:

return render_template(url_for('main.register_form'))
url_for返回通过Internet访问路由的url,而render_模板不使用该url。render_模板需要一个html/文本文件

因此,将其替换为:

return render_template('register.html')
或者将用户重定向到另一个路由,让其完成工作:

from flask import redirect
...
return redirect(url_for('main.register'))

请格式化您的代码,它不可读。如果您对如何格式化有疑问,请阅读此文:如果我甚至想闪现我的错误,该怎么办?因为如果我想抛出任何提到的错误消息,它将不起作用!在模板处理堆栈之前,闪现的消息会一直堆积起来,因此只要您在重定向之前闪现错误,您就应该可以在/register routes模板中访问这些消息。