标签: web2py

web2py有这些吗?

我正在用Yii和phing完成一个PHP项目.即使Yii是我迄今为止最好的Web框架,我更喜欢用PHP编写Python.所以,我一直在关注web2py并提出一些问题:

  1. web2py是否提供Javascript表单验证?Yii有http://www.yiiframework.com/extension/jformvalidate/
  2. web2py有一个mongo db插件吗?与http://www.yiiframework.com/extension/yiimongodbsuite/相当的东西
  3. 你能用web2py编写控制台应用程序吗?
  4. web2py是否从模型类自动生成SQL,还是可以从SQL模式生成模型类?我更喜欢后者.
  5. Python Web应用程序可以使用哪些部署工具?有什么像phing?是的,我知道我可以使用ant,Maven,甚至是phing,但我宁愿使用Python中实现的东西.

python web2py

8
推荐指数
1
解决办法
2506
查看次数

使用web2py DAL.define_table()初始化数据库表的正确方法

我正在尝试动态构建调用的表,db.blogdb.code使用完全相同的SQL定义.在我定义它们之后,我想用10行随机数据填充它们,并且永远不再执行该初始化代码.

我的问题是每当我在浏览器上点击刷新时执行初始化代码,而我查看newblog appadmin接口db.codedb.blog:https://172.25.1.1/newblog/appadmin/select/db?query = db.code.id > 0

我初始化db.blogdb.codenewblog/models/newblog.py:

from gluon import *
from gluon.contrib.populate import populate

## initialize db.blog and db.code: 
##     At runtime, build TAGGED_TABLES (once)
TAGGED_TABLES = set(['blog', 'code'])
for tt in TAGGED_TABLES:
    if not db.get(tt, False):
        db.define_table(tt,
            Field('name', length=32, notnull=True),
            Field('value', length=65535, notnull=True),
            Field('tags', type='list:reference tag', unique=False, notnull=False),
            )

        populate(db.get(tt), 10)

        ## cross-reference db.tagged_tables to this one
        db.tagged_tables.insert(name=tt,
            database_pointer='reference %s' % …
Run Code Online (Sandbox Code Playgroud)

python database web2py

8
推荐指数
1
解决办法
3757
查看次数

给我一些很棒的Web2py提示和技巧,让你更有效率

我一直在使用web2py官方web2py书,并学习了太多东西.但是一本书从未教授过富有成效的工作流程.我想知道您使用什么工作流程来提高您的工作效率和对整个框架的理解.

例如:我经常使用Web2py交互式shell来玩数据库对象并了解它们的工作原理.

python workflow web2py

7
推荐指数
1
解决办法
1025
查看次数

清理web2py我的控制器

我的控制器在我的web2py应用程序中变得有点凌乱,我想将功能移到另一个地方.

我最初考虑将它们移动到模块,但我有时会访问db,并在db.py中设置其他参数(我是用户ID,现在是日期等).

是否有一种干净的方法将这些功能移动到一个新文件,同时仍然可以访问我需要的变量?我并不反对from db import me, now

web2py

7
推荐指数
1
解决办法
1230
查看次数

web2py上传原始文件名

我想用SQL.factory()上传文件我只想维护我的代码当前的原始文件名

form = SQLFORM.factory(
    Field('file_name', requires=IS_NOT_EMPTY()),
    Field('file', 'upload',uploadfolder=upload_folder))
if form.accepts(request.vars, session):  #.process().accepted:
    response.flash = u'File uploaded'
    session.your_name = form.vars.file_name
    session.filename = request.vars.file 
elif form.errors:
    response.flash = 'form has errors'
return dict(form=form)
Run Code Online (Sandbox Code Playgroud)

我猜session.filename = request.vars.file是你设置文件名的地方.为什么我得到自动生成的文件名no_data.smth.23u8o8274823zu4i2.smth

谢谢

sql factory web2py

7
推荐指数
2
解决办法
6573
查看次数

如何将SockJS与另一个Web框架集成

作为Socket.io的替代品,有SockJS(https://github.com/sockjs/sockjs-client),它似乎比Socket.io更好地维护和更稳定.

这个问题是关于概念性理解将SockJS与Web框架一起使用的架构,例如,用于构建聊天应用程序

我目前的理解是你需要SockJS客户端和SocketJS服务器(在我的情况下,我打算使用SockJS-Tornado(https://github.com/MrJoes/sockjs-tornado))来制作websockets-风格沟通.

但是SockJS(SockJS-client + SockJS-Tornado)如何与执行其余工作的Web框架(例如,提供页面,写入/读取数据库等)相结合.例如,SockJS-Tornado组件如何与框架的Web服务器通信?特别是,高度赞赏使用web2py(python web框架)执行此操作的任何方向.

web2py web-frameworks server-push reverse-ajax websocket

7
推荐指数
1
解决办法
3492
查看次数

Selenium从字典中选择for循环的下拉选项

我有一个包含输入和下拉列表的表单:

[...]
<select>
<option></option>
<option>Test User 1</option>
<option>Test User 2</option>
</select>
[...]
Run Code Online (Sandbox Code Playgroud)

我将值传递给Selenium作为字典:

dict = {'user':'Test User 1', [...]}
Run Code Online (Sandbox Code Playgroud)

我使用for循环来执行此操作:

for key in dict.keys():
    inputElement = driver.find_element_by_name(key)
    inputElement.clear()
    inputElement.send_keys(dict[key])
Run Code Online (Sandbox Code Playgroud)

它适用于所有输入,但使用下拉菜单不起作用.但是当我没有循环的情况下它可以工作.例如:

inputElement = driver.find_element_by_name('user')
inputElement.clear()
inputElement.send_keys(dict['user'])
Run Code Online (Sandbox Code Playgroud)

要么

inputElement = driver.find_element_by_name('user')
inputElement.clear()
inputElement.send_keys('Test User 1')
Run Code Online (Sandbox Code Playgroud)

python selenium web2py

7
推荐指数
2
解决办法
9514
查看次数

设计可轻松迁移到Google App Engine

我将很快开始设计一个Web应用程序,虽然我在SQL世界中有很多经验,但我不知道我需要考虑这样做,目标是在非常近的地方迁移到GAE未来.

或者,我可以从一开始就为GAE设计应用程序,所以在这种情况下,我需要考虑哪些差异?换句话说,为GAE编写应用程序的DO和DON是什么,来自过去的关系数据库.

python google-app-engine web2py non-relational-database relational-database

6
推荐指数
1
解决办法
421
查看次数

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,而赋值则不返回.

  • 这是预期的行为吗?
  • 如果使用赋值方法,如何获取id?
  • 分配方法是否已被删除?

python web2py

6
推荐指数
2
解决办法
4699
查看次数

创建一个web2py docker镜像并通过浏览器访问它

我正在尝试在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)

web2py docker

6
推荐指数
1
解决办法
1710
查看次数