Flask BuildError - Не удалось создать URL для конечной точки - PullRequest
0 голосов
/ 13 октября 2019

У меня есть очень простой код на Python для выбора некоторых данных из моей базы данных

@app.route('/studentsearch', methods = ['POST', 'GET'])
def searchstudent():
    """ Displays the student search page for the site """
    cursor = mydb.cursor()
    cursor.execute ("SELECT * FROM student")
    all_students = cursor.fetchall()
    cursor.close()
    return render_template('studentsearch.html', all_students = all_students)

Но когда я начинаю рендерить страницу HTML, я получаю werkzeug.routing.BuildError: Не удалось создать URL для конечной точки 'studentsearch'. Вы имели в виду «newstudent» вместо этого?

Мой стол тоже довольно прост ...

<table>
    <thread>
        <tr>
            <th>Student ID:</th>
            <th>First Name:</th>
            <th>Last Name:</th>
            <th>Click to View Student Details</th>
        </tr>
    </thread>
    <tbody>
        {% for each_result in all_students %}
            <tr>
                <td>{{ each_result[0] }}</td>
                <td>{{ each_result[1] }}</td>
                <td>{{ each_result[2] }}</td>
                <td>CLICK HERE!!!</td>
            </tr>
        {% endfor %}
    </tbody>
</table>

Что происходит? 'newstudent' даже не упоминается в Python или HTML ??

В соответствии с запросом вот код, из которого, по-видимому, исходит "newstudent":

def newstudent():
    """Displays the new student page for the site"""
    return render_template('newstudent.html')

@app.route('/process_newstudent', methods = ['POST', 'GET'])
def process_newstudent():
    """ Processes the data from the new student course """
    if request.method == 'POST':
        first_name = request.form['firstname']
        last_name = request.form['lastname']
        year_began = request.form['yearbegan']

        try:
            cursor = mydb.cursor()
            cursor.execute ("INSERT INTO student (first_name, last_name, year_began) VALUES ('{}','{}','{}');".format((first_name.title()), (last_name.title()), year_began))
            mydb.commit()
            cursor.close()
        except mysql.connector.Error as err:
            cursor.close()
            return failure('newstudent', f"Error message: {err}. Student not added")
        else:
            cursor = mydb.cursor()
            cursor.execute ("SELECT * FROM student")
            student_success = cursor.fetchall()
            cursor.close()
            return render_template('newstudent_success.html', student_success = student_success)
    else:
        request.method == 'GET'
        return render_template('newstudent.html')

1 Ответ

0 голосов
/ 13 октября 2019

Вы пытаетесь создать динамический URL где-нибудь в коде приложения или HTML-коде, используя функцию url_for ?

Если да, то я думаю, что может произойти, что вы передаете параметр 'studentsearch' этой функции вместо 'searchstudent' ( url_for создает конечные точки, используя имя функции представления, а не имя конечной точки). Например, в шаблоне HTML рассматриваемый URL будет построен следующим образом:

<a href="{{ url_for('searchstudent') }}">Search</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...