我正在用Yii和phing完成一个PHP项目.即使Yii是我迄今为止最好的Web框架,我更喜欢用PHP编写Python.所以,我一直在关注web2py并提出一些问题:
我正在尝试动态构建调用的表,db.blog并db.code使用完全相同的SQL定义.在我定义它们之后,我想用10行随机数据填充它们,并且永远不再执行该初始化代码.
我的问题是每当我在浏览器上点击刷新时执行初始化代码,而我查看newblog appadmin接口db.code或db.blog:https://172.25.1.1/newblog/appadmin/select/db?query = db.code.id > 0
我初始化db.blog并db.code在newblog/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) 我一直在使用web2py官方web2py书,并学习了太多东西.但是一本书从未教授过富有成效的工作流程.我想知道您使用什么工作流程来提高您的工作效率和对整个框架的理解.
例如:我经常使用Web2py交互式shell来玩数据库对象并了解它们的工作原理.
我的控制器在我的web2py应用程序中变得有点凌乱,我想将功能移到另一个地方.
我最初考虑将它们移动到模块,但我有时会访问db,并在db.py中设置其他参数(我是用户ID,现在是日期等).
是否有一种干净的方法将这些功能移动到一个新文件,同时仍然可以访问我需要的变量?我并不反对from db import me, now
我想用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
谢谢
作为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框架)执行此操作的任何方向.
我有一个包含输入和下拉列表的表单:
[...]
<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) 我将很快开始设计一个Web应用程序,虽然我在SQL世界中有很多经验,但我不知道我需要考虑这样做,目标是在非常近的地方迁移到GAE未来.
或者,我可以从一开始就为GAE设计应用程序,所以在这种情况下,我需要考虑哪些差异?换句话说,为GAE编写应用程序的DO和DON是什么,来自过去的关系数据库.
python google-app-engine web2py non-relational-database relational-database
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,而赋值则不返回.
我正在尝试在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)