我试图实现一个"下载链接"并将其放在我的一个报表中,以便用户可以下载一个csv文件并使用Excel等应用程序打开它.
记录是根据用户的查询动态生成的.
所以在我的控制器的某个地方有类似的东西:
response.headers['Content-Type'] = 'text/csv'
response.headers['Content-Disposition'] = 'attachment; filename=xxx.csv'
return response.stream(dynamically_generated_csv, request=request)
Run Code Online (Sandbox Code Playgroud)
这适用于FireFox和Chrome,但在IE中失败.
当我打印出响应标题时,我发现web2py在我的响应中添加了几个标题:'Expires','Cache-Control'等...
当我通过执行以下操作删除"Cache-Control"标头时:
del response.headers['Cache-Control']
Run Code Online (Sandbox Code Playgroud)
它适用于IE.
因此,IE似乎无法处理可将"Cache-Control"设置为特定值的可下载文件.
现在,我的问题是:
为什么web2py会隐式添加这些响应头?也许没有办法把它关掉?
当我以这种方式删除'Cache-Control'标题时,有任何副作用吗?
提前致谢.
我正在使用web2py为我的网站供电.我决定将web2py DAL用于在网站后面运行的长期运行程序.该程序似乎没有更新其数据或数据库(有时).
from gluon.sql import *
from gluon.sql import SQLDB
from locdb import *
# contains
# db = SQLDB("mysql://user/pw@localhost/mydb", pool_size=10)
# db.define_table('orders', Field('status', 'integer'), Field('item', 'string'),
# migrate='orders.table')
orderid = 20 # there is row with id == 20 in table orders
#when I do
db(db.orders.id==orderid).update(status=6703)
db.commit()
Run Code Online (Sandbox Code Playgroud)
它不会更新数据库,并且具有此ID的订单上的选择会显示正确的数据.在某些情况下,提交后的"db.rollback()"似乎有所帮助.
至少可以说很奇怪.你见过这个吗?更重要的是你知道解决方案吗?
更新:
更正:有问题的选择是在程序内完成的,而不是在程序之外.
有时,在进行一系列更新时,有些会在外面工作并且可用,而有些则无法使用.此外,一些查询将返回它最初返回的数据,即使数据在自原始查询后数据库中发生了更改.
我很想抛弃这种方法并转向另一种方法,任何建议?
我需要为杂货店建立一个内部订单输入和跟踪系统,这需要现有电子商务系统的许多功能,例如产品目录,customer_to_order关系/视图,移动报告,订单状态等.但是,第一个该产品的阶段纯粹是内部的,因此我不需要任何在线电子商务功能,如送货地址,邮政费率或支付网关.我还有一些业务特定的东西,可能不适用于很多在线商店:复杂的产品/客户折扣系统,产品的许多属性,生产者订单跟踪流程(客户订单与我们和生产者订购了,等等.
所以我想知道我是否会更好地定制现有产品,或者用一个好的Web框架(例如Python/web2py)来推销自己的产品?如果它是一个干燥的网上商店,那么决定将是明确的 - 但事实并非如此.因此,我正在努力寻找最具扩展性/灵活性的FOSS电子商务软件进行原型设计.
到目前为止,我一直在考虑的主要竞争者是:Drupal/Ubercart,Django/Satchmo和RoR/Spree.Ubercart正在进行一次完整的重写,如Drupal Commerce,所以这让我失望.Spree项目看起来很干净,我喜欢这些想法 - 但我已经在Jython中编写产品/客户ETL并且不想平衡这两种语言 - Python和Ruby对我来说都是新手.
我不喜欢Magento的企业/社区版模型.我听到很多关于osCommerce及其变种的抱怨.
提前感谢您的想法.
顺便说一句,我认为我需要的功能集与我现有的电子商务产品开箱即用的功能之间的差距大约为30%.
我将很快开始设计一个Web应用程序,虽然我在SQL世界中有很多经验,但我不知道我需要考虑这样做,目标是在非常近的地方迁移到GAE未来.
或者,我可以从一开始就为GAE设计应用程序,所以在这种情况下,我需要考虑哪些差异?换句话说,为GAE编写应用程序的DO和DON是什么,来自过去的关系数据库.
python google-app-engine web2py non-relational-database relational-database
我有兴趣知道是否有类似于Heroku的Ruby on Ralils的python/web2py托管平台?一些易于配置和可扩展的东西?
Web2py文档有两种插入数据库的方法
db.tbl[0] = newRow
Run Code Online (Sandbox Code Playgroud)
和
db.tbl.insert(newRowAsDict)
Run Code Online (Sandbox Code Playgroud)
文档暗示它们是同义词,但它们似乎是不同的.例如,如果newRow包含不在表中的字段,则insert方法抛出异常.此外,.insert方法返回添加行的id,而赋值则不返回.
我正在使用Eclipse(使用PyDev)来减少web2py应用程序.我已按照本指南进行设置.现在,我想使用Eclipse调试我的应用程序.但是,由于某种原因,执行不会(始终)在到达断点时停止.
我创建了两个单独的web2py应用程序(在两个Eclipse项目中).调试似乎适用于一个,但不适用于另一个.两个项目都引用相同的web2py安装.因此,独立于Eclipse中的"Run .../Debug ..."项目,web2py通过浏览器提供这两个应用程序.
我创建了一个简单的测试文件(controllers/test.py),如下所示:
def index():
print 'I should break.'
print 'After the breakpoint'
return dict(test=1)
Run Code Online (Sandbox Code Playgroud)
第一个print语句设置了断点.
我把这个文件放在两个项目中(我们称之为A和B).
我有以下观察:
当我从Eclipse启动调试时,每当我点击属于项目A的文件test.py中的断点时,调试器就会停止执行,但它似乎忽略属于项目B的文件test.py中的断点.它不会无论我是从(Eclipse-)项目A还是项目B启动web2py,行为总是一样的.属于项目A工作的文件中的断点,项目B中的断点将被忽略.
我比较了所有项目属性并运行配置属性,但我找不到区别(项目名称和路径除外).
两个项目的执行完美无缺.例如,print上面显示的测试文件的语句输出始终显示在Eclipse控制台中.
有没有人知道这里发生了什么?可能有什么区别使它在项目A上工作而在项目B上没有?
我使用的是Python 2.7.1.
当我设置
DEBUG_TRACE_LEVEL = 3
DEBUG_TRACE_BREAKPOINTS = 3
Run Code Online (Sandbox Code Playgroud)
在eclipse/plugins/org.python.pydev.debug/pysrc/pydevd_constants.py中(根据评论中的要求),我得到以下控制台输出:
pydev debugger:starting('执行文件','C:\ misc\web2py_src\web2py\web2py.py')('arguments:',"['C:\\ misc \\ web2py_src \\ web2py \\ web2py.py ''")('连接到','127.0.0.1',':','49565')('已连接.')('收到命令','501\t1\t1.1')发送cmd: CMD_VERSION 501 1 1.1
sending cmd: CMD_THREAD_CREATE 103 2 <xml><thread name="pydevd.reader" id="-1"/></xml>
sending cmd: CMD_THREAD_CREATE 103 4 <xml><thread name="pydevd.writer" id="-1"/></xml>
('received command ', '111\t3\tC:\\misc\\workspace\\Newtoon\\controllers\\test.py\t12\t**FUNC**index\tNone')
Added breakpoint:c:\misc\workspace\newtoon\controllers\test.py - line:12 - …Run Code Online (Sandbox Code Playgroud) 我有一个线程做了很多CPU密集型处理,这似乎阻止了其他线程.我该如何限制它?
这是针对web2py的,但一般解决方案没问题.
我正在尝试在ubuntu上构建web2py的docker镜像.鉴于docker文件
#######################
# Web2py installation #
#######################
# Set the base image for this installation
FROM ubuntu
# File Author/ Mainteainer
MAINTAINER sandilya28
#Update the repository sources list
RUN apt-get update --assume-yes
########### BEGIN INSTALLATION #############
## Install Git first
RUN apt-get install git-core --assume-yes && \
cd /home/ && \
git clone --recursive https://github.com/web2py/web2py.git
## Install Python
RUN sudo apt-get install python --assume-yes
########## END INSTALLATION ################
# Expose the default port
EXPOSE 8000
WORKDIR /home/
Run Code Online (Sandbox Code Playgroud)
通过使用上面的Dockerfile构建映像
docker build …Run Code Online (Sandbox Code Playgroud) pygal,呈现svg并返回图表字典.我尝试将其嵌入到web2py页面中.这样可行.但我无法弄清楚如何减少页面上图形的大小.
风景:
{{extend 'layout.html'}}
<h1>Hello {{=request.vars.simulation_id}}</h1>
<figure>
{{=XML(one)}}
{{=XML(two)}}
</figure>
Run Code Online (Sandbox Code Playgroud)
和default.py函数:
def run_simulation():
simulation = start.Simulation()
graphs = simulation.run()
return graphs
Run Code Online (Sandbox Code Playgroud)