windows 下的烧瓶 404 错误

flask 404 error under windows

我正在尝试 运行 windows 10 下的一个小烧瓶模块化应用程序。我已经创建了一个模块来午餐索引页面。虽然作为单个应用程序 运行s 正确加载主页,但我无法将其模块化,导致找不到 404 错误页面。

这是我的目录结构:

Application directory structure

我的文件:

runserver.py

import os
#from app.models import User, Role
from flask import Flask


basedir = os.path.abspath(os.path.dirname(__file__))

from landingpage import app

app = Flask(__name__)


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

__init__.py

   import os

from flask import Flask, render_template, session, redirect, url_for
from flask.ext.script import Manager
from flask.ext.bootstrap import Bootstrap
from flask.ext.moment import Moment
from flask.ext.wtf import Form
from wtforms import StringField, TextField, DateField, SubmitField
from wtforms.validators import Required
from wtforms.fields.html5 import DateField
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.admin.form.widgets import DatePickerWidget





basedir = os.path.abspath(os.path.dirname(__file__))
#print "basedir is %r " % (basedir)
app = Flask(__name__)


import views

class AnotherSearchForm(Form):
    place = StringField(default=u'Où voulez-vous aller?', validators=[Required()])
    checkin =TextField(default=u'checkin', validators=[Required()])
    checkout=TextField(default=u'checkout', validators=[Required()])
    dt = DateField('DatePicker', format='%Y-%m-%d')

    submit = SubmitField('Rechercher')

views.py

import os
basedir = os.path.abspath(os.path.dirname(__file__))
from flask import Flask, render_template, session, redirect, url_for, current_app


#from .. import db
#from ..models import User
#from ..email import send_email
import landingpage
from landingpage import app
#from .forms import AnotherSearchForm




@app.route('/', methods=['GET', 'POST'])
def index():

    form = AnotherSearchForm()
    return render_template('indexnew.html',
                           title='Home',
                           form=form)

应用程序 运行 正确,如下所示,

$ python runserver.py
C:\Users\admin\Anaconda\lib\site-packages\flask_sqlalchemy\__init__.py:800: UserWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future.  Set it to True to suppress this warning.
  warnings.warn('SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future.  Set it to True to suppress this warning.')
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat

但无法在 http://127.0.0.1:5000/ 上加载主页 indexnew.html,出现 404 错误:

127.0.0.1 - - [22/Apr/2016 14:10:21] "GET / HTTP/1.1" 404 -

您似乎在 runserver.py 以及您的 __init__.py

中定义了应用程序

我怀疑 runserver.py 是那里定义的 运行 应用程序,而您的真实应用程序实际上正在设置,然后被您的 runserver.py.

覆盖

您想在 runserver.py 中导入 app 并使用它,而不是再次定义它。

换句话说,从 runserver.py...

中删除这一行

app = Flask(__name__)

更新

我有一个您的代码版本,其中包含我建议的修复方法。您可以在 GitHub:

上找到它

https://github.com/martinpeck/Whosebug_example_1

我拿走了你的密码。它以两种方式失败:

  1. 你导入的视图对我不起作用
  2. 修复后,我看到了 404

修复您的代码:

  1. import views 替换为 import landingpage.views 中的 __init__.py
  2. 按照上面的建议,从 runserver.py
  3. 中删除 app = Flask(__name__)