我有一个app.py
文件。我想在HEROKU上传。我已经看到在Heroku上传时需要进行一些更改,例如添加Procfile
和Requirements.txt
。我还添加了这两个。它在本地但在Heroku数据库上完美地工作并不是创建或连接。
我在终端上做了什么
heroku create
git push heroku master
heroku addons:add heroku-postgresql
heroku config:set HEROKU=1
heroku ps:scale web=1
heroku open
现在我的用户注册网页正在打开但无法保存。请帮忙
app.py
import os
import urlparse
import psycopg2
from peewee import Model, CharField, SqliteDatabase, CharField, ForeignKeyField, IntegrityError
from peewee import create_model_tables
from flask import Flask, request, render_template, redirect, url_for, session
from passlib.hash import sha256_crypt
from flask_bootstrap import Bootstrap
from flask_peewee.db import Database
if 'HEROKU' in os.environ:
DEBUG = False
urlparse.uses_netloc.append('postgres')
url = urlparse.urlparse(os.environ['DATABASE_URL'])
DATABASE = {
'engine': 'peewee.PostgresqlDatabase',
'name': url.path[1:],
'user': url.username,
'password': url.password,
'host': url.hostname,
'port': url.port,
}
else:
DEBUG = True
DATABASE = {
'engine': 'peewee.PostgresqlDatabase',
'name': 'notes',
'user': 'scrolldev',
'password': 'scrolldev',
'host': 'localhost',
'port': 5432,
'threadlocals': True
}
app = Flask(__name__)
bootstrap = Bootstrap(app)
app.config.from_object(__name__)
db = Database(app)
class User(db.Model):
....
class Notepad(db.Model):
....
def setup_db():
create_model_tables([User, Notepad], fail_silently=True)
....
....
....
if __name__ == '__main__':
setup_db()
app.secret_key = 'super_secret_key'
app.run(debug=True)
在提出这个问题之前,我也从这里获得了帮助,然后我更新了我的文件Stack Question
更新 它在本地工作正常,但在heroku上没有。请帮帮我。
答案 0 :(得分:0)
如果url
中包含DATABASE_URL
,您的代码会从'HEROKU'
环境变量加载os.environ
if 'HEROKU' in os.environ:
DEBUG = False
urlparse.uses_netloc.append('postgres')
url = urlparse.urlparse(os.environ["DATABASE_URL"])
...但是还将其加载到条件之前几行:
from peewee import Model, PostgresqlDatabase
urlparse.uses_netloc.append('postgres')
url = urlparse.urlparse(os.environ['DATABASE_URL']) # <--
根据您上面的评论,听起来这是一个错误。在开发计算机上设置DATABASE_URL
(我建议使用;开发和生产之间的更改越少越好),或删除在url
块之外设置if
的代码。