2016-04-22 4 views
1

Я пытаюсь запустить модульное приложение с маленькой флягой под окнами 10. Я создал модуль, чтобы обедать индексную страницу. Хотя, поскольку одно приложение работает правильно и загружает домашнюю страницу, я не могу сделать его модульным, если страница ошибки 404 не найдена.ошибка колпачка 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 

, но не удается загрузить домашнюю страницу indexnew.html на http://127.0.0.1:5000/ давая a 404:

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

Получаете ли вы выход в командной строке при доступе к странице? –

+0

только ошибка 404 выше. –

+0

Мне кажется, что view.py не импортируется должным образом. –

ответ

2

Вы, кажется, есть приложение определено в runserver.py, а также в вашем __init__.py

Я подозреваю, что runserver.py работает приложение, определенный там, в то время как ваше реальное приложение фактически установить, а затем переопределены runserver.py.

Вы хотите импортировать app в пределах runserver.py и использовать это, а не определять его снова.

Другими словами, удалите эту строку из runserver.py ...

app = Flask(__name__)

обновление

У меня версия кода, который имеет исправление я предлагаю. Вы можете найти его на GitHub:

https://github.com/martinpeck/stackoverflow_example_1

Я взял свой код.Он потерпел неудачу в двух направлениях:

  1. ваш импорт просмотров не работает для меня
  2. как только я установил это, я увидел 404

Чтобы исправить код:

  1. заменить import views с import landingpage.views в __init__.py
  2. , как было предложено выше, удалить app = Flask(__name__) из runserver.py
+0

Спасибо, что исправили ошибку. –

+0

@IPPOKRATISKARAKOTSOGLOU Не стесняйтесь отмечать мой ответ как правильный, если он исправил вашу проблему. Это поможет мне, и это поможет другим найти ответ на аналогичные проблемы. –

+0

Мне очень жаль. Я просто сделал это сейчас. Отличная работа. –

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