簡體   English   中英

在 PythonAnywhere 上部署的 Flask 應用程序上找不到 404

[英]Getting 404 not found on Flask app deployed on PythonAnywhere

我已經翻遍了大約 50 個不同的答案,但我仍然無法解決它......我對 flask 和 python 還是很陌生。

我有一個在本地運行良好的應用程序,但我很難在任何地方部署 python。 最初我遇到了一些導入模塊問題,現在它運行但不返回任何 html 模板,盡管沒有看到任何其他問題。 我遇到的主要問題是它無法從 wsgi 中找到“路線”應用程序,並且我修復了在 routes.py 上添加 app = Flask( name ) 行(短藍圖 object 不可調用)。

路線.py:

from flask import Blueprint, render_template, request, redirect, send_file
import pyqrcode 
from pyqrcode import QRCode 
import subprocess

from extensions import db
from models import Link

app = Flask(__name__)

short = Blueprint('short', __name__, url_prefix='/')

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

初始化.py

from flask import Flask
from extensions import db
from routes import short

def create_app(config_file='settings.py'):

    app = Flask(__name__)

    app.config.from_pyfile(config_file)

    db.init_app(app)

    app.register_blueprint(short)

    return app

wsgi.py

import sys

# add your project directory to the sys.path
project_home = u'/home/b297py/mysite'

if project_home not in sys.path:
    sys.path = [project_home] + sys.path

# import flask app but need to call it "application" for WSGI to work
from routes import app as application

出於測試的目的,我將所有 html 模板都放在了根目錄和特定的 /template 目錄中,但這並沒有解決問題。

在 wsgi.py 中,您沒有調用create_app ,因此您永遠不會注冊藍圖。 你應該更換:

from routes import app as application

通過類似的東西:

from package_name import create_app
application = create_app() 

(例如: https://www.pythonanywhere.com/forums/topic/12889/#id_post_50171

同樣正如您所提到的,將app = Flask(__name__)添加到routes.py的修復程序允許您繞過 create_app (因此,如果您想堅持使用 create_app 方法,則應將其刪除)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM