我正在使用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()"似乎有所帮助.
至少可以说很奇怪.你见过这个吗?更重要的是你知道解决方案吗?
更新:
更正:有问题的选择是在程序内完成的,而不是在程序之外.
有时,在进行一系列更新时,有些会在外面工作并且可用,而有些则无法使用.此外,一些查询将返回它最初返回的数据,即使数据在自原始查询后数据库中发生了更改.
我很想抛弃这种方法并转向另一种方法,任何建议?
给定布局视图,如何从视图文件中将静态文件(基本上是CSS和JS)加载到<head>中?
的layout.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{=T.accepted_language or 'en'}}">
<head>
<title>{{=response.title or request.application}}</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!-- include requires CSS files
{{response.files.append(URL(request.application,'static','base.css'))}}
{{response.files.append(URL(request.application,'static','ez-plug-min.css'))}}
-->
{{include 'web2py_ajax.html'}}
</head>
<body>
{{include}}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
myview.html
{{extend 'layout.html'}}
{{response.files.append(URL(r=request,c='static',f='myview.css'))}}
<h1>Some header</h1>
<div>
some content
</div>
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,"myview.css"文件被web2py忽略或被浏览器剥离.
那么加载像这个CSS文件这样的页面特定文件的最佳方法是什么?我宁愿不把所有静态文件都填充到我的布局中.
目前我们正在运行几个较小的PHP站点(小公司,私人,非营利组织,朋友......),并希望将它们迁移到Python,以便能够更轻松地调整它们和/或扩展其功能由于熟悉Python虽然没有使用某些Python框架的实际经验.
为了不从头开始编写所有内容,我们需要体面的CMS,博客和一些电子商务模块.
我们做了一些研究,在Django世界中安装并尝试了很少的应用程序,到目前为止已经达到了两种可能性:
这两种组合都很不错,虽然并不完美...目前由于使用了不兼容版本的django-mptt或者例如Mezzanine缺少一些功能,例如链接支持,因此集成django-cms和zinnia的发布版本存在问题.博客等
在使用上述两组应用程序时,我们听说过Web2py并且必须说我们喜欢那里的很多东西......
我们知道这是一个较小的社区,较少的应用程序等更年轻的项目,但想知道是否有一些web2py应用程序可以与上面提到的两个Django集相比较,以便我们可以选择从Web2py开始,学习它并在那个过程用它替换PHP站点?
所以,我们希望有一些功能强大的CMS +博客具有以下功能:
就电子商务而言,除了与CMS +博客应用轻松集成外,我们不需要任何引人注目的东西 - 我们的"公司"正在销售"服务",因此不需要数千种产品(只有10种产品),没有复杂运输选项如下:
将是我们所需要的一切.
考虑到我们希望拥有的功能,我们(非)使用任何框架的经验,您认为哪一个 - Django或Web2py - 更容易学习,易用性,应用程序支持等?
我发送了两个帖子到web2py列表和(也许)因为我的查询不够具体(或其他原因)我没有收到任何回复,我看到有一些应用程序,如KPAX CMS看起来很老/非保持.Otoh,有Powerpack包含Instant Press,但我不确定电子商务组件的可用性.最后,我发现了plugin_wiki似乎是新的/年轻的应用程序,但是,考虑到我们发现了关于Django世界的可能性,我们想了解Web2py场景的情况,以便能够更好地评估两种选择.
如果设备列表组织得更好,那么很容易找到维护的内容,项目页面等等.
从python web2py创建请求后.我从精细上传器收到以下错误
"我们计算的请求签名与您提供的签名不符.请检查您的密钥和签名方法."
这是我的服务器端代码
def _sign(key, msg):
return hmac.new(key, msg.encode("utf-8"), hashlib.sha256).digest()
def getV4Signature(date_stamp, regionName, policy):
kDate = _sign(('AWS4' + AWS_SECRET_KEY).encode('utf-8'), date_stamp)
kRegion = _sign(kDate, regionName)
kService = _sign(kRegion, 's3')
kSigning = _sign(kService, 'aws4_request')
kSignature = _sign(kSigning, policy)
return binascii.hexlify(kSignature)
Run Code Online (Sandbox Code Playgroud) 我有三个应用程序,但我希望它们使用相同的layout.html和css.有没有办法实现这个目标?
编辑:
我将静态文件夹和layout.html等放在web2py根目录下的/ common /中.
这是我在模型中所做的:
import os
global web2py_path
web2py_path = os.environ.get('web2py_path', os.getcwd())
session.layout_path = web2py_path + '/common/layout.html'
print 'session.layout_path = ' + session.layout_path
Run Code Online (Sandbox Code Playgroud)
然后在视图中:
{{extend session.layout_path}}
Run Code Online (Sandbox Code Playgroud)
编辑2:
关于下面关于编译的评论,我决定将'common'文件夹放入'/ applications /'并将静态文件夹(css,images)放在'common'文件夹中,就像常规应用程序一样.然后我将layout.html放入'common'的根目录中.然后从另一个应用程序的视图,我使用:
{{extend '../../common/layout.html'}}
Run Code Online (Sandbox Code Playgroud)
其中引用了普通应用中的layout.html.然后,此layout.html文件使用以下内容引用"common"中静态文件夹中的文件:
{{=URL('common','static','css','style.css')}}
Run Code Online (Sandbox Code Playgroud)
就像你经常申请一样.
我在Windows 7本地运行web2py并在Linux Ubuntu服务器上运行,但我无法让我的cron作业运行.
我的crontab看起来像这样:
*/1 * * * * root *autoemail/send_autoemails
Run Code Online (Sandbox Code Playgroud)
并且我的功能在手动调用时工作正常.它也以
db.commit()
Run Code Online (Sandbox Code Playgroud)
除此之外,我不知道还有什么可以让它工作,虽然我真的不了解Cron上的所有web2py书籍部分,特别是涉及到软/硬/外部cron以及所有这些.
我看到一个web2py线程,也许cron将被替换?
也许这与此有关?在配置cron之前我还需要做些什么吗?
关于如何解决这个问题的任何想法都非常感谢.
我想创建一个包含下拉字段的表单.输入文本或在一个下拉列表中选择一个选项后,我想在另一个下拉列表中填充选项.
有没有最好的做法,专门使用web2py?
我想在服务器设置中使用它们之前尝试使用Redhat kickstart文件并在python中修改它们.我的应用程序使用python来卷曲我的Redhat Satellite服务器上的原始kickstart文件然后我正在对kickstart文件中的某些值进行字符串替换.当我在python中卷曲文件时,它会以多行字符串的形式返回,这是我需要的,以便redhat kickstart正确解释文件.但是当我通过其中一个框架(web2py,bottle,flask)返回字符串变量时,会发生一些事情并且它不会将其作为多行字符串返回,我需要它来保留除了区域之外的原始文件的确切格式我改变.我不想把我的kickstart文件放在模板中,因为我通过卫星管理它们,如果我从卫星卷曲文件然后它拿起任何修改,而不需要进入模板的时间.然后在模板或其他东西中我返回没有模板的字符串或模板文件中我只将1个变量作为整个kickstart文件传递给模板.
@route('/kickstart/<name>')
def kickstart(name):
ks = vula.kickstarter.kickstart.Kickstarter()
ks_file = ks.getKickstartFile()
return pystache.render('{{kickstart}}', {'kickstart': ks_file})
Run Code Online (Sandbox Code Playgroud)
这是我的vula包中的方法.它完全按照我需要的方式返回文件.但是在这之间又发生了一些事情,并通过框架返回这个值.
def getKickstartFile(self):
response = urllib2.urlopen('https://my-satellite-server/core-kickstarter')
ks_file = response.read()
return ks_file
Run Code Online (Sandbox Code Playgroud)
我开始使用Bottle作为框架,但我发现一条声明说他们无法返回多行字符串,所以请抓一下.我搬到了Flask,但目前Flask正在做同样的事情.我还在学习python,可能我做错了什么,但我需要任何帮助才能使这个工作正常.我想输出一个多行字符串.我知道你也使用了
""" or '''
Run Code Online (Sandbox Code Playgroud)
对于多行字符串,但即使你这样做并通过框架发送它仍然会作为一个连续的行打印到屏幕上.我究竟做错了什么?作为最后的手段,如果我不能输出多行字符串,我将被迫将kickstart文件放入模板中.
如果我使用 -F 选项运行 web2py,它将生成一个 .prof 文件。我如何读取这个文件的内容?Hotshot似乎不起作用(我也尝试过 RunSnakeRun)。
我看到一些与我的查询相关的帖子。
Tornado 在下面的链接中使用 如何将变量从 python 传递到 javascript
我知道可以使用 json 来完成,但我不清楚如何实现它。在 web2py 默认控制器中,我返回一个包含纬度和经度的字典。
def index():
lat_long_list=[]
info1 = {'lat':'1.0032','long':'2.00003','name':'Akash'}
info2 = {'lat':'1.2312','long':'-1.0034','name':'Kalyan'}
lat_long_list.append(info1)
lat_long_list.append(info2)
return dict(lat_long_list=lat_long_list)
Run Code Online (Sandbox Code Playgroud)
在java脚本中,我想迭代字典列表并在谷歌地图上标记点。
我不能说
<script>
{{ for lat_long_rec in lat_long_list :}}
var name = {{=lat_long_rec['name']}}
{{ pass }}
</script>
Run Code Online (Sandbox Code Playgroud)
这失败了。处理此问题的另一种方法是将列表写入 xml 并从 javascript 读取文件,但我不想以这种方式实现它,因为写入文件的性能不高。让我知道如何最好地实现这一目标。
web2py ×10
python ×4
flask ×2
blogs ×1
bottle ×1
cron ×1
crontab ×1
css ×1
django ×1
e-commerce ×1
javascript ×1
profiling ×1
python-3.x ×1
redhat ×1
static-files ×1
view ×1