页面未找到python flask

时间:2017-09-15 20:41:34

标签: flask http-status-code-404

我开始编写python程序,我使用flask框架创建了一个Web应用程序,但它没有找到页面,404。

您好,我在访问删除(" excluir")驱动程序功能并返回列表(" lista.html")页面时遇到问题。每当我点击表格中的删除(" Excluir motorista")链接时,就会发现找不到错误页面。

这是一个app.py

#!/usr/local/bin/python
# -*- coding: UTF-8 -*-

#IMPORTAR FRAMEWORK FLASK
from flask import Flask, render_template, request, url_for, redirect
from flask_sqlalchemy import SQLAlchemy

#CONFIGURAÇÃO E CRIACAO DAS TABELAS DO BACO DE DADOS
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite3'

db = SQLAlchemy(app)

class MotoristaDB(db.Model):
    __tablename__ = 'motorista'
    _idMotorista = db.Column(db.Integer, autoincrement=True, primary_key=True)
    nomeMotorista = db.Column(db.String)
    dtNascMotorista = db.Column(db.String)
    cpfMotorista = db.Column(db.Integer)
    modCarro = db.Column(db.String)
    status = db.Column(db.String)
    sexoMotorista = db.Column(db.String)

    def __init__ (self, nomeMotorista, dtNascMotorista, cpfMotorista, modCarro, status, sexoMotorista):
        self.nomeMotorista = nomeMotorista
        self.dtNascMotorista = dtNascMotorista
        self.cpfMotorista = cpfMotorista
        self.modCarro = modCarro
        self.status = status
        self.sexoMotorista = sexoMotorista

class PassageiroDB(db.Model):
    __tablename__ = 'passageiro'
    _idPassageiro = db.Column(db.Integer, autoincrement = True, primary_key = True)
    nomePassageiro = db.Column(db.String)
    dtNascPassageiro = db.Column(db.String)
    cpfPassageiro = db.Column(db.Integer)
    sexoPassageiro = db.Column(db.String)

    def __init__(self, nomePassageiro, dtNascPassageiro, cpfPassageiro, sexoPassageiro):
        self.nomePassageiro = nomePassageiro
        self.dtNascPassageiro = dtNascPassageiro
        self.cpfPassageiro = cpfPassageiro
        self.sexoPassageiro = sexoPassageiro

db.create_all()

@app.route('/index')
def index():
    return render_template('index.html')

##CADASTRAMENTO DE MOTORISTAS

@app.route('/cadastrarMotorista')
def cadastrarMotorista():
    return render_template('cadastroMotorista.html')

@app.route('/cadastroMotorista', methods=['GET', 'POST'])
def cadastroMotorista():
    if request.method == 'POST':
        nomeMotorista = request.form.get('nomeMotorista')
        dtNascMotorista = request.form.get('dtNascMotorista')
        cpfMotorista = request.form.get('cpfMotorista')
        modCarro = request.form.get('modCarro')
        status = request.form.get('status')
        sexoMotorista = request.form.get('sexoMotorista')

        if nomeMotorista and dtNascMotorista and cpfMotorista and modCarro and (status == 'ativo' or status == 'inativo' or status == 'Ativo' or status == 'Inativo') and sexoMotorista:
            motorista = MotoristaDB(nomeMotorista, dtNascMotorista, cpfMotorista, modCarro, status, sexoMotorista)
            db.session.add(motorista)
            db.session.commit()

    return redirect(url_for('index'))


##CADASTRAMENTO DE PASSAGEIROS
@app.route('/cadastrarPassageiro')
def cadastrarPassageiro():
    return render_template('cadastroPassageiro.html')

@app.route('/cadastroPassageiro', methods=['GET', 'POST'])
def cadastroPassageiro():
    if request.method == 'POST':
        nomePassageiro = request.form.get('nomePassageiro')
        dtNascPassageiro = request.form.get('dtNascPassageiro')
        cpfPassageiro = request.form.get('cpfPassageiro')
        sexoPassageiro = request.form.get('sexoPassageiro')

        if nomePassageiro and dtNascPassageiro and cpfPassageiro and sexoPassageiro:
            passageiro = PassageiroDB(nomePassageiro, dtNascPassageiro, cpfPassageiro, sexoPassageiro)
            db.session.add(passageiro)
            db.session.commit()

    return redirect(url_for('index'))

##LISTAGEM DE MOTORISTA, PASSAGEIROS E CORRIDAS FEITAS

@app.route('/lista')
def lista():
    motoristas = MotoristaDB.query.all()
    passageiros = PassageiroDB.query.all()

    return render_template('lista.html', motoristas = motoristas, passageiros = passageiros)

##ATUALIUÇÃO DO STATUS DO MOTORISTA
@app.route('/excluir/<int:idMotorista>')
def excluir(idMotorista):
    motorista = MotoristaDB.query.filter_by(_idMotorista=idMotorista).first()
    db.session.delete(motorista)
    db.session.commit()

    motoristas = MotoristaDB.query.all();
    return render_template('lista.html', motoristas = motoristas)

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

是lista.html

<!DOCTYPE html>
<html>
<head>
    <title>Corridas Compartilhada</title>
</head>
<body>
<h1>Corridas Compartilhadas</h1>
<hr/>
<table border="1">
    <tr>
        <td>Nome</td>
        <td>Data de Nascimento</td>
        <td>CPF</td>
        <td>Modelo do Carro</td>
        <td>Status</td>
        <td>Sexo</td>
        <td>Excluir</td>
    </tr>
    {% for motorista in motoristas %}
    <tr>
        <td>{{ motorista.nomeMotorista }}</td>
        <td>{{ motorista.dtNascMotorista }}</td>
        <td>{{ motorista.cpfMotorista }}</td>
        <td>{{ motorista.modCarro }}</td>
        <td>{{ motorista.status }}</td>
        <td>{{ motorista.sexoMotorista }}</td>
        <td><a href="/excluir/{{ motorista._id }}">Excluir Motorista</a></td>
    </tr>
    {% endfor %}
</table>

<table border="1">
    <tr>
        <td>Nome</td>
        <td>Data de Nascimento</td>
        <td>CPF</td>
        <td>Sexo</td>
    </tr>
    {% for passageiro in passageiros %}
    <tr>
        <td>{{ passageiro.nomePassageiro }}</td>
        <td>{{ passageiro.dtNascPassageiro }}</td>
        <td>{{ passageiro.cpfPassageiro }}</td>
        <td>{{ passageiro.sexoPassageiro }}</td>
    </tr>
    {% endfor %}
</table>
</body>
</html>

问题是访问删除(&#34; excluir&#34;)功能。

OBS:我是巴西人,对不起英语中的错误呵呵:)

1 个答案:

答案 0 :(得分:1)

我认为简单的解决方案是使用redirect

from flask import url_for, redirect

@app.route('/excluir/<int:idMotorista>')
def excluir(idMotorista):
    motorista = MotoristaDB.query.filter_by(_idMotorista=idMotorista).first()
    db.session.delete(motorista)
    db.session.commit()

    return redirect(url_for('lista'))