简体   繁体   English

werkzeug.routing.BuildError:无法为端点“配置文件”构建 url。 你指的是“家”吗? 与 Flask - Python

[英]werkzeug.routing.BuildError: Could not build url for endpoint 'profile'. Did you mean 'home' instead? with Flask - Python

I have the following error:我有以下错误:

raise BuildError(endpoint, values, method, self) werkzeug.routing.BuildError: Could not build url for endpoint 'profile'. raise BuildError(endpoint, values, method, self) werkzeug.routing.BuildError: 无法为端点“profile”构建 url。 Did you mean 'home' instead?你指的是“家”吗?

Could you please help me in solving this issue?你能帮我解决这个问题吗?

this is the main part, where I created a login and also a register, but I am having issues at the part where the user login and is redirected to the home page这是主要部分,我在其中创建了一个登录名和一个寄存器,但我在用户登录并被重定向到主页的部分遇到了问题

Here is what I wrote so far:这是我到目前为止写的:

import re
import MySQLdb
from flask import Flask, render_template, request, redirect, url_for, session
from flask_mysqldb import MySQL

app = Flask(__name__)
app.secret_key='hospital'

app.config['MYSQL_HOST']='localhost'
app.config['MYSQL_USER']='root'
app.config['MYSQL_PASSWORD']='iuliaion110899'
app.config['MYSQL_DB']='pythonlogin'

mysql = MySQL(app)


@app.route('/pythonlogin/', methods=['GET', 'POST'])
def login():
    # Output message if something goes wrong...
    msg = ''

    # Check if "username" and "password" POST requests exist (user submitted form)
    if request.method == 'POST' and 'username' in request.form and 'password' in request.form:
        # Create variables for easy access
        username = request.form['username']
        password = request.form['password']
        # Check if account exists using MySQL
        cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
        cursor.execute('SELECT * FROM accounts WHERE username = %s AND password = %s', (username, password,))
        # Fetch one record and return result
        account = cursor.fetchone()
        # If account exists in accounts table in out database
        if account:
            # Create session data, we can access this data in other routes
            session['loggedin'] = True
            session['id'] = account['id']
            session['username'] = account['username']
            # Redirect to home page


            return redirect(url_for('home'))

        else:
            # Account doesnt exist or username/password incorrect
            msg = 'Incorrect username/password!'

    # Show the login form with message (if any)
    return render_template('index.html', msg=msg)


@app.route('/pythonlogin/logout')
def logout():

    session.pop('loggedin', None)
    session.pop('id', None)
    session.pop('username', None)

    return render_template(url_for('login'))



@app.route('/pythonlogin/register', methods=['GET', 'POST'])
def register():
    msg = ''

    if request.method == 'POST' and 'username' in request.form and 'password' in request.form and 'email' in request.form:

        username = request.form['username']
        password = request.form['password']
        email = request.form['email']

        cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
        cursor.execute('SELECT * FROM accounts WHERE username = %s', (username,))
        account = cursor.fetchone()

        if account:
            msg = 'Account already exists!'

        elif not re.match(r'[^@]+@[^@]+\.[^@]+', email):
            msg = 'Invalid email adress!'

        elif not re.match(r'[A-Za-z0-9]+', username):
            msg = 'Username must contain only characters and numbers!'

        elif not username or not password or not email:
            msg = 'Please fill out the form!'

        else:
            cursor.execute('INSERT INTO accounts VALUES (NULL, %s, %s, %s)' , (username,password,email,))
            mysql.connection.commit()
            msg = 'You have successfully registered!'



    elif request.method == 'POST':

        msg =  'Please fill out the form!'

    return render_template('register.html', msg = msg)


@app.route('/pythonlogin/home')
def home():

    # Check if user is loggedin
    if 'loggedin' in session:
        # User is loggedin show them the home page
        return render_template('home.html', username=session['username'])

    # User is not loggedin redirect to login page
    return redirect(url_for('login'))


if __name__ == '__main__':
    app.run()

home.html主页.html

{% extends 'layout.html' %}

{% block title %}Home{% endblock %}

{% block content %}
<h2>Home Page</h2>
<p>Welcome back, {{ username }}!</p>
{% endblock %}

layout.html布局.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>{% block title %}{% endblock %}</title>
        <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
        <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css">
    </head>
    <body class="loggedin">
        <nav class="navtop">
            <div>
                <h1>Website Title</h1>
                <a href="{{ url_for('home') }}"><i class="fas fa-home"></i>Home</a>
                <a href="{{ url_for('profile') }}"><i class="fas fa-user-circle"></i>Profile</a>
                <a href="{{ url_for('logout') }}"><i class="fas fa-sign-out-alt"></i>Logout</a>
            </div>
        </nav>
        <div class="content">
            {% block content %}{% endblock %}
        </div>
    </body>
</html>

Add a profile view function.添加profile图 function。

def profile():
    # ...
    return render_template('profile.html')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 werkzeug.routing.BuildError:无法为端点“配置文件”构建 url。 你的意思是“索引”吗? - werkzeug.routing.BuildError: Could not build url for endpoint 'profile'. Did you mean 'index' instead? Flask python - werkzeug.routing.BuildError: 无法为端点构建 url - Flask python - werkzeug.routing.BuildError: Could not build url for endpoint 如何修复错误:werkzeug.routing.BuildError:无法为值为 [&#39;id&#39;] 的端点“delete”构建 url。 你的意思是“索引”吗? - How to fix error: werkzeug.routing.BuildError: Could not build url for endpoint 'delete' with values ['id']. Did you mean 'index' instead? werkzeug.routing.BuildError:无法为值为 [&#39;next&#39;] 的端点“login”构建 url。 您的意思是“core.login”吗? - werkzeug.routing.BuildError: Could not build url for endpoint 'login' with values ['next']. Did you mean 'core.login' instead? werkzeug.routing.BuildError:无法为端点“auth.Esp_Index”构建 url。 您的意思是“auth.login”吗? - werkzeug.routing.BuildError: Could not build url for endpoint 'auth.Esp_Index'. Did you mean 'auth.login' instead? werkzeug.routing.BuildError:无法为端点“ main.profile”构建URL。 您是否忘记了指定值[&#39;username&#39;]? - werkzeug.routing.BuildError: Could not build url for endpoint 'main.profile'. Did you forget to specify values ['username']? werkzeug.routing.BuildError:无法为端点“成功”构建 url。 您是否忘记指定值 [&#39;name&#39;]? - werkzeug.routing.BuildError: Could not build url for endpoint 'success'. Did you forget to specify values ['name']? werkzeug.routing.BuildError:无法为端点“书页”构建 url。 您是否忘记指定值 ['isbn']? - werkzeug.routing.BuildError: Could not build url for endpoint 'bookpage'. Did you forget to specify values ['isbn']? werkzeug.routing.BuildError:无法使用值构建端点“输出”的 url - werkzeug.routing.BuildError: Could not build url for endpoint 'output' with values werkzeug.routing.BuildError:无法为端点“Bookdetails”构建 url。 您是否忘记指定值 ['book_id']? - werkzeug.routing.BuildError: Could not build url for endpoint 'Bookdetails'. Did you forget to specify values ['book_id']?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM