我想检测,如果该请求来自来到localhost:5000
或foo.herokuapp.com
主机,并请走什么路.如何获取有关Flask请求的此信息?
每次我运行使用Flask-SQLAlchemy的应用程序时,都会收到以下警告:该SQLALCHEMY_TRACK_MODIFICATIONS
选项将被禁用.
/home/david/.virtualenvs/flask-sqlalchemy/lib/python3.5/site-packages/flask_sqlalchemy/__init__.py:800: UserWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True to suppress this warning.
warnings.warn('SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True to suppress this warning.')
Run Code Online (Sandbox Code Playgroud)
我试图找出这个选项的作用,但Flask-SQLAlchemy文档并不清楚使用此跟踪的内容.
SQLALCHEMY_TRACK_MODIFICATIONS
如果设置为True(默认值),Flask-SQLAlchemy将跟踪对象的修改并发出信号.这需要额外的内存,如果不需要可以禁用.
如何确定我的项目是否需要,SQLALCHEMY_TRACK_MODIFICATIONS = True
或者我是否可以安全地禁用此功能并在我的服务器上保存内存?
我的应用程序调用返回字典的API.我想在视图中将此dict中的信息传递给JavaScript.我特意在JS中使用Google Maps API,所以我想传递一个带有long/lat信息的元组列表.我知道这render_template
会将这些变量传递给视图,因此可以在HTML中使用它们,但是如何将它们传递给模板中的JavaScript?
from flask import Flask
from flask import render_template
app = Flask(__name__)
import foo_api
api = foo_api.API('API KEY')
@app.route('/')
def get_data():
events = api.call(get_event, arg0, arg1)
geocode = event['latitude'], event['longitude']
return render_template('get_data.html', geocode=geocode)
Run Code Online (Sandbox Code Playgroud) 你是如何在Flask中调试错误的?打印到控制台?Flash消息到页面?或者是否有更强大的选项可以找出出现问题时发生的情况?
我有一个前缀,我想添加到每个路由.现在我在每个定义中为路径添加一个常量.有没有办法自动执行此操作?
PREFIX = "/abc/123"
@app.route(PREFIX + "/")
def index_page():
return "This is a website about burritos"
@app.route(PREFIX + "/about")
def about_page():
return "This is a website about burritos"
Run Code Online (Sandbox Code Playgroud) 我正在尝试写入CSV文件,但中间有空行.如何删除空白行?
import csv
b = open('test.csv', 'w')
a = csv.writer(b)
data = [['Me', 'You'],\
['293', '219'],\
['54', '13']]
a.writerows(data)
b.close()
Run Code Online (Sandbox Code Playgroud) 如何url_for
在Flask中使用引用文件夹中的文件?例如,我在static
文件夹中有一些静态文件,其中一些可能在子文件夹中,如static/bootstrap
.
当我尝试提供文件时static/bootstrap
,我收到错误.
<link rel=stylesheet type=text/css href="{{ url_for('static/bootstrap', filename='bootstrap.min.css') }}">
Run Code Online (Sandbox Code Playgroud)
我可以引用不在子文件夹中的文件,这有效.
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='bootstrap.min.css') }}">
Run Code Online (Sandbox Code Playgroud)
引用静态文件的正确方法是什么url_for
?如何使用url_for
在任何级别生成静态文件的URL?
我正在尝试使用 SQLAlchemy 连接到 Postgres 数据库。我已经安装了 psycopg2。但是,我收到错误sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:postgres
。如何配置 SQLAlchemy 以连接到 PostgreSQL?
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "postgres://username@localhost:5432/template1"
db = SQLAlchemy(app)
Run Code Online (Sandbox Code Playgroud) 我需要在Alembic升级期间更改数据.
我目前在第一次修订中有一个'玩家'表:
def upgrade():
op.create_table('player',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.Unicode(length=200), nullable=False),
sa.Column('position', sa.Unicode(length=200), nullable=True),
sa.Column('team', sa.Unicode(length=100), nullable=True)
sa.PrimaryKeyConstraint('id')
)
Run Code Online (Sandbox Code Playgroud)
我想介绍一个'团队'表.我创建了第二个版本:
def upgrade():
op.create_table('teams',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=80), nullable=False)
)
op.add_column('players', sa.Column('team_id', sa.Integer(), nullable=False))
Run Code Online (Sandbox Code Playgroud)
我想第二次迁移也添加以下数据:
填充团队表:
INSERT INTO teams (name) SELECT DISTINCT team FROM players;
Run Code Online (Sandbox Code Playgroud)根据players.team名称更新players.team_id:
UPDATE players AS p JOIN teams AS t SET p.team_id = t.id WHERE p.team = t.name;
Run Code Online (Sandbox Code Playgroud)如何在升级脚本中执行插入和更新?
我了解到,默认情况下,程序中的I/O是缓冲的,即它们从临时存储器提供给请求程序.我知道缓冲可以提高IO性能(可能通过减少系统调用).我已经看到了禁用缓冲的示例,例如setvbuf
在C中.两种模式之间有什么区别?何时应该使用另一种模式?
python ×9
flask ×6
sqlalchemy ×3
jinja2 ×2
alembic ×1
buffering ×1
csv ×1
debugging ×1
io ×1
javascript ×1
postgresql ×1
psycopg2 ×1
python-3.3 ×1
routes ×1
url ×1