0
votes

I'm getting this error even I am to render the template. I tried changing the function names also.

This is happening due to flask(error) I think

Traceback (most recent call last): File "/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/app.py", line 2463, in call return self.wsgi_app(environ, start_response) File "/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/app.py", line 2449, in wsgi_app response = self.handle_exception(e) File "/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/app.py", line 1866, in handle_exception reraise(exc_type, exc_value, tb) File "/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise raise value File "/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app response = self.full_dispatch_request() File "/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request rv = self.handle_user_exception(e) File "/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception reraise(exc_type, exc_value, tb) File "/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise raise value File "/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request rv = self.dispatch_request() File "/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request return self.view_functionsrule.endpoint File "/Users/ayyagari/Documents/DeepNews/web_2/website/main.py", line 57, in register_user return render_template(url_for('main.register_form')) File "/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/templating.py", line 138, in render_template ctx.app.jinja_env.get_or_select_template(template_name_or_list), File "/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/jinja2/environment.py", line 869, in get_or_select_template return self.get_template(template_name_or_list, parent, globals) File "/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/jinja2/environment.py", line 830, in get_template return self._load_template(name, self.make_globals(globals)) File "/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/jinja2/environment.py", line 804, in _load_template template = self.loader.load(self, name, globals) File "/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/jinja2/loaders.py", line 113, in load source, filename, uptodate = self.get_source(environment, name) File "/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/templating.py", line 60, in get_source return self._get_source_fast(environment, template) File "/Users/ayyagari/Documents/DeepNews/web_2/venv/lib/python3.7/site-packages/flask/templating.py", line 89, in _get_source_fast raise TemplateNotFound(template) 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 is also showing a 500 Internal server error

1
Please format your code, it is unreadable. Read this if you have doubts on how to format: meta.stackexchange.com/a/22189Rahul Bharadwaj

1 Answers

1
votes

The problem is here:

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

url_for returns a url to access the route via the Internet, which isn't what render_template uses. render_template is expecting a html/text file.

So, either replace that either with:

return render_template('register.html')

Or redirect the user to the other route, to let it do it's work:

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