Python 2.7 使用带有蓝图的Python mod_wsgi应用程序

Python 2.7 使用带有蓝图的Python mod_wsgi应用程序,python-2.7,flask,mod-wsgi,Python 2.7,Flask,Mod Wsgi,我正在尝试创建具有以下结构的简单mod_wsgi应用程序 档案: /var/www/test/application.wsgi-mod_wsgi过程 /var/www/test/hello.py-python应用程序 /var/www/test/static/index.html-静态内容 /etc/apache2/sites available/test.conf-应用程序配置 application.wsgi import sys activate_this = '/home/u

我正在尝试创建具有以下结构的简单mod_wsgi应用程序

档案:

  • /var/www/test/application.wsgi-mod_wsgi过程
  • /var/www/test/hello.py-python应用程序
  • /var/www/test/static/index.html-静态内容
  • /etc/apache2/sites available/test.conf-应用程序配置
  • application.wsgi

       import sys
       activate_this = '/home/ubuntu/environments/test/bin/activate_this.py'
       execfile(activate_this, dict(__file__=activate_this))
       sys.path.insert(0, '/var/www/test')
       from hello import app as application
    
    你好,派伊

       from flask import Flask
       app = Flask(__name__, static_url_path='')
    
       @app.route("/")
       def root():
           return app.send_static_file('index.html')
    
      from flask import Flask
      app = Flask(__name__, static_url_path='')
    
      @app.route("/")
      def root():
         return app.send_static_file('index.html')
    
      from views.authentication import authentication
      app.register_blueprint(authentication, url_prefix='/test/auth')
    
    index.html

       <html><h1>testing</h1></html>
    
    /var/www/test/views/authentication.py-facebook身份验证

      from flask import Blueprint
    
      authentication = Blueprint('authentication', __name__)
    
      @authentication.route('/facebook/', method=['POST'])
      def facebook():
         ''' facebook login '''
         access_token_url = app.config.get('FACEBOOK_ACCESS_TOKEN_URL')
         graph_api_url = app.config.get('FACEBOOK_GRAPH_API_URL')
    
         pass
    

    一旦我引入上述蓝图代码,我就开始接收404错误(即使方法体为空)。知道吗,原因是什么?如果有任何帮助或建议,我将不胜感激。

    您应该检查您的
    错误。日志
    ,它总是开始调试的好地方。我假设会有这样一行:
    ImportError:No module named views
    。这是因为您必须将名为
    \uuu init\uuu.py
    的文件(至少是一个空文件)放在模块目录中(在您的情况下是
    视图
    )。以下是来自以下方面的解释:

    要使Python处理 包含包的目录;这样做是为了防止 无意中使用公用名称(如字符串)的目录 隐藏稍后在模块搜索路径上出现的有效模块。在里面 最简单的情况是,
    \uuuuu init\uuuuu.py
    可以只是一个空文件,但它可以是一个空文件 同时执行包的初始化代码或设置
    \uuuu all\uuu
    变量,稍后描述

    第二个问题是
    方法=['POST']
    。应该是
    方法
    'GET'
    方法才能“正常”到达此页面:


    你应该检查你的
    错误日志,它总是开始调试的好地方。我假设会有这样一行:
    ImportError:No module named views
    。这是因为您必须将名为
    \uuu init\uuu.py
    的文件(至少是一个空文件)放在模块目录中(在您的情况下是
    视图
    )。以下是来自以下方面的解释:

    要使Python处理 包含包的目录;这样做是为了防止 无意中使用公用名称(如字符串)的目录 隐藏稍后在模块搜索路径上出现的有效模块。在里面 最简单的情况是,
    \uuuuu init\uuuuu.py
    可以只是一个空文件,但它可以是一个空文件 同时执行包的初始化代码或设置
    \uuuu all\uuu
    变量,稍后描述

    第二个问题是
    方法=['POST']
    。应该是
    方法
    'GET'
    方法才能“正常”到达此页面:


    不幸的是,方法vs.方法是一个打字错误。同时,我在日志中没有收到任何错误,因为相关代码已经就位。只是,应用程序的index.html包含动态javascript内容(bower、bootstrap等),我不确定通过python mod_wsgi应用程序获得动态内容还需要什么。如果有人有使用这种机制的经验,了解“如何在AWS实例上调试bower组件”会很有趣吗?您是否根据我的回答做了其他两个修改?您仍然需要这些方法(
    'GET'
    方法和
    \uuuu init\uuuu.py
    文件)。对于静态文件,通常需要在Apache配置文件中定义别名。对于动态生成的Java脚本,不需要额外的步骤,只需将它们放在Jinja的
    中,它们就可以工作了。同时,我在日志中没有收到任何错误,因为相关代码已经就位。只是,应用程序的index.html包含动态javascript内容(bower、bootstrap等),我不确定通过python mod_wsgi应用程序获得动态内容还需要什么。如果有人有使用这种机制的经验,了解“如何在AWS实例上调试bower组件”会很有趣吗?您是否根据我的回答做了其他两个修改?您仍然需要这些方法(
    'GET'
    方法和
    \uuuu init\uuuu.py
    文件)。对于静态文件,通常需要在Apache配置文件中定义别名。对于动态生成的Java脚本,不需要额外的步骤,只需将它们放在Jinja的
    中即可。
      from flask import Blueprint
    
      authentication = Blueprint('authentication', __name__)
    
      @authentication.route('/facebook/', method=['POST'])
      def facebook():
         ''' facebook login '''
         access_token_url = app.config.get('FACEBOOK_ACCESS_TOKEN_URL')
         graph_api_url = app.config.get('FACEBOOK_GRAPH_API_URL')
    
         pass
    
    @authentication.route('/facebook/', methods=['GET', 'POST'])
    def facebook():
        ''' facebook login'''