【问题标题】:flask 404 error under windowswindows下烧瓶404错误
【发布时间】:2016-04-22 12:18:50
【问题描述】:

我正在尝试在 Windows 10 下运行一个小型烧瓶模块化应用程序。我创建了一个模块来午餐索引页面。当单个应用程序正确运行并加载主页时,我无法使其模块化,导致找不到 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 -

【问题讨论】:

  • 访问页面时,命令行有输出吗?
  • 只有上面的错误404。
  • 对我来说,views.py 似乎没有正确导入。
  • 但所有其他导入,如landing.views 或 .视图也给出了一个未找到模块的错误。
  • 测试一下,在底部放一个print 行,看看它是否打印到控制台。

标签: python flask http-status-code-404


【解决方案1】:

您似乎在runserver.py__init__.py 中定义了应用

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

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

换句话说,从runserver.py中删除这一行...

app = Flask(__name__)

更新

我有一个版本的代码,其中包含我建议的修复。你可以在 GitHub 上找到它:

https://github.com/martinpeck/stackoverflow_example_1

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

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

修复您的代码:

  1. __init__.py 中将import views 替换为import landingpage.views
  2. 如上所述,从runserver.py 中删除app = Flask(__name__)

【讨论】:

  • @IPPOKRATISKARAKOTSOGLOU 如果我的回答解决了您的问题,请随意将其标记为正确。它会帮助我,也会帮助其他人找到类似问题的答案。
  • 非常抱歉。我现在才这样做。干得好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 2013-08-19
  • 2011-04-10
  • 2012-12-03
  • 1970-01-01
相关资源
最近更新 更多