Flask-本地主机

时间:2016-01-30 14:05:17

标签: python flask

我是Flask的新手,我正在努力学习如何使用它。我有HTML和CSS的基础知识(足以制作简单的页面,而不是真正的幻想)。 因此,我决定给Flask一个镜头,至少设置基础看起来相当简单。

目前我正在尝试运行本地服务器(我使用的是Windows 7,Python 3.4)。根据一些说明,我设置了这样的项目:

-Flask (main folder)
  routes.py
  /templates
            template.html
            home.html
            welcome.html
  /static
            /css
            /img
            /js
            /font     (for the moment the static folder is empty, except the subfolders)

这是template.html的结构:

 <!--DOCTYPE html -->
    <html>
    <head>
        <title>
            My first Flask App
        </title>
    </head>
    <body> 
        <div>
            {% block content %}
            {% endblock %}
        </div>
    </body>
</html>

home.html的:

{% extends "template.html" %}
{% block content %}
    <div>
        <h2>Welcome to Flask!</h2>
        <br />
        <p>Click <a href="/welcome">here</a>to go to the welcome page</p>
    </div>
{% endblock %}

最后,welcome.html:

{% extends "template.html" %}
{% block content %}
    <h2>Sample</h2>
        <p>What a nice page</p>
        <p>Really nice</p>
{% endblock %}

这是routes.py中的代码:

from flask import Flask,render_template

app=Flask(__name__)

@app.route('/')      
def home():
    return render_template('home.html')

@app.route('/welcome') 
def welcome():
    return render_template('welcome.html')


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

当我尝试运行脚本时,终端说:

* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

但是,当我尝试在浏览器上访问localhost:5000时,我得到了:

Internal Server Error

The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

更具体地说,终端上说:

127.0.0.1 - - [30/Jan/2016 14:45:51] "GET / HTTP/1.1" 500 -

我对HTTP状态代码知之甚少,所以我知道在出现某种错误时会引发代码500。实际上,当我查找有关此问题的信息时,我找到的每个页面(包含在stackoverflow中)都表明存在一些错误,无论是在&#34; routes.py&#34;或者在提供的html页面中。

为了确定,我尝试运行此脚本:

from flask import Flask

app=Flask(__name__)

@app.route('/')
def home():
    return '''
          <html>
      <head>
        <title>
            My first Flask App
        </title>
      </head>
      <body> 
        <div>
                       hello there!
        </div>
       </body>
           </html>
          '''

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

这样工作正常,服务器启动,如果我去localhost:5000我可以正确看到页面。实际上,在终端上我看到状态代码200,这意味着&#34;一切正常&#34;如果我没记错的话。 我甚至尝试添加更多路由,通过定义更多将html页面作为字符串返回的函数,并且一切正常。 我甚至尝试在这些页面上使用CSS,以三种形式(在行声明,内部样式表和外部样式表中),它都按预期工作。

所以,在最后一次尝试中,我再次运行原始routes.py,这次是app.debug=True 这是我得到的追溯:

* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
Traceback (most recent call last):
  File "C:\Users\Admin\pyproj\flask\routes.py", line 25, in <module>
    app.run()
  File "C:\Python34\Lib\site-packages\Flask-0.10.1-py3.4.egg\flask\app.py", line 777, in run
    run_simple(host, port, self, **options)
  File "C:\Python34\Lib\site-packages\werkzeug-0.11.3-py3.4.egg\werkzeug\serving.py", line 690, in run_simple
    reloader_type)
  File "C:\Python34\Lib\site-packages\werkzeug-0.11.3-py3.4.egg\werkzeug\_reloader.py", line 252, in run_with_reloader
    sys.exit(reloader.restart_with_reloader())
builtins.SystemExit: 0

说真的,我必须在这里找到一些非常明显的东西:我无数次检查了所有代码。对我来说,一切似乎都很好:HTML文档中的所有标签都已正确关闭,模板的{%---%}语法似乎写得很好,routes.py上的代码似乎也正确。此外,通常看起来Flask正在工作,因为如果我尝试将html页面作为直接写在routes.py中的字符串返回,我可以看到页面并与页面进行交互。发生了什么事?

修改 基于大卫建议,我尝试使用app.run(debug=True,use_reloader=False)

运行脚本

这是追溯

Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\flask-0.10.1-py3.4.egg\flask\app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Python34\lib\site-packages\flask-0.10.1-py3.4.egg\flask\app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "C:\Python34\lib\site-packages\flask-0.10.1-py3.4.egg\flask\app.py", line 1403, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Python34\lib\site-packages\flask-0.10.1-py3.4.egg\flask\_compat.py", line 33, in reraise
    raise value
  File "C:\Python34\lib\site-packages\flask-0.10.1-py3.4.egg\flask\app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Python34\lib\site-packages\flask-0.10.1-py3.4.egg\flask\app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Python34\lib\site-packages\flask-0.10.1-py3.4.egg\flask\app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Python34\lib\site-packages\flask-0.10.1-py3.4.egg\flask\_compat.py", line 33, in reraise
    raise value
  File "C:\Python34\lib\site-packages\flask-0.10.1-py3.4.egg\flask\app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Python34\lib\site-packages\flask-0.10.1-py3.4.egg\flask\app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "x-wingide-python-shell://70495568/2", line 16, in home

  File "C:\Python34\lib\site-packages\flask-0.10.1-py3.4.egg\flask\templating.py", line 127, in render_template
    return _render(ctx.app.jinja_env.get_or_select_template(template_name_or_list),
  File "C:\Python34\lib\site-packages\jinja2-2.8-py3.4.egg\jinja2\environment.py", line 851, in get_or_select_template
    return self.get_template(template_name_or_list, parent, globals)
  File "C:\Python34\lib\site-packages\jinja2-2.8-py3.4.egg\jinja2\environment.py", line 812, in get_template
    return self._load_template(name, self.make_globals(globals))
  File "C:\Python34\lib\site-packages\jinja2-2.8-py3.4.egg\jinja2\environment.py", line 774, in _load_template
    cache_key = self.loader.get_source(self, name)[1]
  File "C:\Python34\lib\site-packages\flask-0.10.1-py3.4.egg\flask\templating.py", line 64, in get_source
    raise TemplateNotFound(template)

我也可以在浏览器上看到回溯。

编辑2: 感谢大卫,我尝试从命令行运行脚本,它运行得很好。通常我使用WingIDE来编写python代码,调试等等;但在这种特殊情况下,它似乎与Jinja2发生冲突。实际上,我现在测试了几次,每次使用WingIDE时,我都会获得500状态代码,当我从命令行运行脚本时(即使我只是双击脚本),它运行正常。

0 个答案:

没有答案