0

我刚刚安装了 flask-bootstrap 并在我的本地主机中运行它。但是我在访问“/dinner/”路由时总是收到内部服务器错误消息。如何修复此错误?谢谢

内部服务器错误 服务器遇到内部错误,无法完成您的请求。服务器过载或应用程序出错。

主文件

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 %}
4

2 回答 2

0

我用这段代码修复了代码,它对我有用:

@app.route('/dinner/')
@app.route('/dinner/<food>')
def dinner(food=None):
    return render_template('food.html', food=food, list=['sushi','pizza','hamburger'])
于 2020-01-22T10:20:19.500 回答
-1
@app.route('/dinner/') 
@app.route('/dinner/<food>') 

这表明,如果您输入两个 URL 中的任何一个,都会调用 index 函数。在其中一个 URL 中,您传递了一些参数,索引函数将采用该参数,但是当您传递第一个 URL 时,没有传递与索引函数冲突的参数,因为它需要一些参数

更好的方法是这样做:

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

如果您不提供任何参数,这将处理默认情况。

于 2020-01-22T09:24:17.027 回答