Как исправить Flask -Bootstrap4 Внутренняя ошибка сервера для двойного маршрута на flask - PullRequest
0 голосов
/ 22 января 2020

Я только что установил flask - bootstrap и запустил его на своем локальном хосте. Но я всегда получаю сообщение Внутренняя ошибка сервера при посещении маршрута "/ ужин /". Как исправить эту ошибку? Спасибо

Внутренняя ошибка сервера Сервер обнаружил внутреннюю ошибку и не смог выполнить ваш запрос. Либо сервер перегружен, либо в приложении произошла ошибка.

Main.py

from flask import Flask, render_template 
from flask_bootstrap import Bootstrap

app = Flask(__name__)
bootstrap = Bootstrap(app)


@app.route('/dinner/')
@app.route('/dinner/<food>')
def index(food):
    return render_template('food.html', food=food, list=['sushi','pizza','hamburger'])

@app.errorhandler(404)
def page_not_found(error):
    return render_template('page_not_found.html'), 404

food. html

{% extends "bootstrap/base.html" %}

{% block title %} What is for dinner? {% endblock %}

{% block content %}

<div class="container">
    {% if food %}
        <div class="alert alert-success">
        <h1>I want that {{food}}</h1>
    {% else %}
        <div class="alert alert-info">
        <h1>Anything is fine!</h1>
    {% endif %}
        </div>

    {% if list %}
    <ul>
        {% for n in list %}
        <li><a href="/dinner/{{n}}">{{n}}</a></li>
        {% endfor %}
    </ul>
    {% endif %} 
</div>

{% endblock %}

Ответы [ 2 ]

0 голосов
/ 22 января 2020

Я исправил код с этим кодом, и он работает для меня:

@app.route('/dinner/')
@app.route('/dinner/<food>')
def dinner(food=None):
    return render_template('food.html', food=food, list=['sushi','pizza','hamburger'])
0 голосов
/ 22 января 2020
@app.route('/dinner/') 
@app.route('/dinner/<food>') 

Это показывает, что если вы введете любой из двух URL, будет вызвана функция индекса. В одном из URL-адресов вы передаете какой-то аргумент, и индексная функция примет этот аргумент, но когда вы передаете 1-й URL-адрес, не передается ни один аргумент, который конфликтует с индексной функцией, так как для этого требуется некоторый аргумент

Лучший способ сделать это, чтобы сделать это:

@app.route('/dinner/', defaults={'food':None})
@app.route('/dinner/<food>')

Это будет обрабатывать случай по умолчанию, если вы не дадите никакого параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...