我试图让render_template在我的网站上运行,遇到麻烦

时间:2016-12-11 03:45:49

标签: python .htaccess flask

这是我的第一天"在此,请耐心等待。

我试图让render_template工作,所以我可以使用Python使用Flask程序来处理html。我已经完成了教程,但是他们只告诉我如何通过终端执行代码,然后才通过显式调用Python。我已经制作了三个文件(routes.py,layout和home),我需要让它们工作并将它们放在(应用程序文件夹,应用程序中的模板文件夹,应用程序中的模板文件夹)中。然后我将app文件夹放在我服务器上的public_html文件中。

当我转到" mywebpage" /app/template/home.html地址时,我得到的html文件最初是在没有替换{{}}变量的情况下编写的。完全难倒。我不知道是否必须在html文件中显式调用routes.py文件,是否必须告诉.htaccess中的DirectoryIndex来查找它,或者服务器是否应该在app文件夹中找到它本身。但基本上我知道routes.py调用其他文件,但我不知道如何调用routes.py。

这是我的代码:

routes.py

from flask import Flask, render_template

app = Flask(__name__)      

@app.route('mywebsite')
def home():
   user = {'nickname': 'Miguel'}  # fake user
   return render_template('home.html', user = user)

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

home.html的

{% extends "layout.html" %}
{% block content %}
  <div class="jumbo">
    <h2>Welcome to the Flask app<h2>
    <h3>This is the home page for the Flask app<h3>
  </div>
  <body>
      <p> Hello, {{user.nickname}} </p>
   </body>
{% endblock %}

的layout.html

<!DOCTYPE html>
<html>
  <head>
    <title>Flask App</title>    
  </head>
  <body>

    <header>
      <div class="container">
        <h1 class="logo">Flask App</h1>
      </div>
    </header> 

    <div class="container">
      {% block content %}
      {% endblock %}
    </div>

  </body>
</html>

最后,要好。我已经做了我能想到的一切来达到这一点。

编辑:本网站:

http://melvin0008.github.io/blog/build-a-redditapi-using-python/

说@ app.route(&#39; / pants&#39;)应该让mywebsite.com/pants显示渲染的模板。我在根目录public_html文件夹和app文件夹中尝试使用我的route.py文件。都没有奏效。我的服务器没有看到website.com/pants。

3 个答案:

答案 0 :(得分:0)

当运行Flask服务器时(在调试中,在这种情况下),您应该使用终端中写入的URL,可能是localhost:8080并将其添加到您想要唤起的路由。

就此而言,为了查看您构建的网页,当localhost:8080/mywebsite是您的服务器网址时,您应该在浏览器localhost:8080中输入。

我建议您将路线名称更改为/,如下所示: 代替: @app.route('mywebsite') 写这个: @app.route('/')

您将获得localhost:8080/

的主页

答案 1 :(得分:0)

多伦是对的。运行应用程序时,应该告诉您它正在您指定的端口上运行。然后,您可以转到localhost:xxxx / mywebsite并查看它。

例如,当我转到localhost时,此设置将返回hello.html文件:1200 / hello

@app.route("/hello")
def hello():
    return render_template("hello.html")

if __name__ == '__main__':
    app.run(host="0.0.0.0", port=1200, debug=True)

只要运行它以便其他人可以看到它,您将需要一个服务器将专用IP地址和Apache服务器,以便您可以启动该应用程序,或者如果您希望您可以免费使用heroku。

答案 2 :(得分:0)

在查看了对其他答案的回复之后,我认为您对Flask项目的部署方式存在根本性的误解。

与其他语言(如PHP或标准HTML)不同,您不能只在浏览器中调用python文件或路径,而是需要在远程服务器上启动服务器应用程序。

如果您正在使用共享虚拟主机,则可能无法实现。

通常,当我开发瓶子应用程序时,我会在Amazon Web Services上启动EC2实例并手动部署它,或使用他们提供的Elastic Beanstalk服务。

您还可以找到允许您部署烧瓶应用的共享虚拟主机。