2015-04-10 4 views
0

Я столкнулся с этой ошибкой «Запрошенный URL-адрес не найден на сервере. Если вы указали URL-адрес вручную, проверьте правильность написания и повторите попытку».FLASK - запрошенный url не найден на сервере

Я проверил API's of URL routing Мне кажется, все в порядке, но почему-то это совсем не работает.

Не могли бы вы рассказать мне, где проблема?

Моя файловая система выглядит следующим образом:

/application.py 
/templates 
    /layout.html 
    /show_all.html 
    /new.html 
    /flight.html 

Конец мой код:

from flask import Flask, request, flash, url_for, redirect, render_template, abort 
from flask_sqlalchemy import SQLAlchemy 

app = Flask(__name__) 
app.config.from_pyfile('config.cfg') 
db = SQLAlchemy(app) 

class Flights(db.Model): 
    __tablename__ = 'flights' 
    id = db.Column(db.Integer, primary_key=True) 
    flight_num = db.Column(db.String) 
    airline_name = db.Column(db.String) 
    time_time = db.Column(db.Integer) 
    date_date = db.Column(db.Integer) 
    from_dest = db.Column(db.String) 
    to_dest = db.Column(db.String) 
    gate_num = db.Column(db.String) 

    def __init__(self, flight_num, airline_name, time_time, date_date, from_dest, to_dest, gate_num): 
     self.flight_num = flight_num 
     self.airline_name = airline_name 
     self.time_time = time_time 
     self.date_date = date_date 
     self.from_dest = from_dest 
     self.to_dest = to_dest 
     self.gate_num = gate_num 

    @app.route('/') 
    def show_all(): 
     return render_template('show_all.html', flights=Flights.query.order_by(Flights.id.desc()).all()) 

    @app.route('/flight/<flight_id>', methods=['GET', 'POST']) 
    def show_flight(flight_id): 
     return render_template('flight.html', flight=Flights.query.filter(Flights.id==flight_id)) 


    @app.route('/new', methods=['GET', 'POST']) 
    def new(): 
     if request.method == 'POST': 
      if not request.form['flight_number']: 
       flash('Flight number is required', 'error') 
      elif not request.form['airline_name']: 
       flash('Airline name is required', 'error') 
      elif not request.form['time_time']: 
       flash('Time is required', 'error') 
      elif not request.form['date_date']: 
       flash('date is required', 'error') 
      elif not request.form['from_dest']: 
       flash('From Destination is required', 'error') 
      elif not request.form['to_dest']: 
       flash('To destination is required', 'error') 
      elif not request.form['gate_num']: 
       flash('Gate is required', 'error') 
      else: 
       flight = Flights(request.form['flight_number'], request.form['airline_name'],request.form['time_time'], request.form['date_date'],request.form['from_dest'], request.form['to_dest'], request.form['gate_num']) 

      db.session.add(flight) 
      db.session.commit() 
      flash(u'Flight successfully created') 
      return redirect(url_for('show_all')) 
     return render_template('new.html') 

    #@app.route('/delete', methods=['GET', 'POST']) 
    #def delete(flight_id): 
     #delete_flight = Flights.query.filter(Flights.id=flight_id) 
     #db.session.delete(delete_flight) 
     #db.session.commit() 

    @app.route('/update', methods=['POST']) 
    def update_done(): 
     Flights.query.all() 
     flash('Updated!') 
     db.session.commit() 
     return redirect(url_for('show_all')) 

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

Какой URL-адрес выдает это сообщение? –

+1

Отступы вашего кода все испорчены. Вы скопировали его из своей программы или повторно указали? Скопируйте-вставьте исходный код непосредственно из своей программы в свой вопрос. –

ответ

0

Вы не можете поместить функции маршрутизации в теле класса. Это твоя проблема. Всякий раз, когда вы указываете браузер на какую-либо конечную точку (например: «... com/something»), приложение Flask ищет функцию, украшенную маршрутом @app.route("/something") и называет его.

Поэтому, поскольку вы размещаете все свои маршруты внутри тела класса, они не могут быть вызваны, если вы не создадите экземпляр объекта (в данном случае - полеты). Итак, чтобы исправить вашу проблему, просто поместите все свои функции маршрута вне тела класса.

Смежные вопросы