Flask-SQLAlchemy插件的快速入门教程指示用户创建继承db.Model
该类的表模型,例如
app = Flask(__main__)
db = SQLAlchemy(app)
class Users(db.Model):
__tablename__ = 'users'
...
Run Code Online (Sandbox Code Playgroud)
但是,SQLAlchemy教程和bottle-SQLAlchemy 自述文件都建议表模型继承Base
实例化declarative_base()
.
Base = declarative_base()
class Users(Base):
__tablename__ = 'users'
...
Run Code Online (Sandbox Code Playgroud)
这两种方法有什么区别?
import urllib
fun open():
return urllib.urlopen('http://example.com')
Run Code Online (Sandbox Code Playgroud)
但是当example.com打开时,它不会渲染css或js.如何在Web浏览器中打开网页?
@error(404)
def error404(error):
return webbrowser.open('http://example.com')
Run Code Online (Sandbox Code Playgroud)
我正在用瓶子.给我错误:TypeError("'bool' object is not iterable",)
文件 "C:\ Python27\lib中\ socket.py",线224,在返回甲基GETATTR(self._sock,名称)(*参数)gaierror:[错误11004]的getaddrinfo失败
从此处启动hello world示例时出现此错误:
我用pip install在python3.4上安装了瓶子.在终端,当我这样做:
$ python3.4
>>>import bottle # shows no import error
>>>
Run Code Online (Sandbox Code Playgroud)
但是当我在PyCharm中这样做时,它会说"导入瓶子ImportError:没有名为'bottle'的模块"
我用Bottle做了一些编码.它非常简单,符合我的需求.但是,当我尝试将应用程序包装到类中时,我坚持了下来:
import bottle
app = bottle
class App():
def __init__(self,param):
self.param = param
# Doesn't work
@app.route("/1")
def index1(self):
return("I'm 1 | self.param = %s" % self.param)
# Doesn't work
@app.route("/2")
def index2(self):
return("I'm 2")
# Works fine
@app.route("/3")
def index3():
return("I'm 3")
Run Code Online (Sandbox Code Playgroud)
可以在Bottle中使用方法而不是函数吗?
我正在使用Bottle编写一个API ,到目前为止一直很棒.但是,在尝试返回JSON数组时,我遇到了一个小障碍.这是我的测试应用代码:
from bottle import route, run
@route('/single')
def returnsingle():
return { "id": 1, "name": "Test Item 1" }
@route('/containsarray')
def returncontainsarray():
return { "items": [{ "id": 1, "name": "Test Item 1" }, { "id": 2, "name": "Test Item 2" }] }
@route('/array')
def returnarray():
return [{ "id": 1, "name": "Test Item 1" }, { "id": 2, "name": "Test Item 2" }]
run(host='localhost', port=8080, debug=True, reloader=True)
Run Code Online (Sandbox Code Playgroud)
当我运行它并请求每个路由时,我得到了前两条路线所期望的JSON响应:
/单
{ id: 1, name: "Test Item 1" }
Run Code Online (Sandbox Code Playgroud)
/ containsarray …
我正在使用瓶子框架和mongoengine.我有订单型号:
class OrderDetail(Option):
orderDetailsQty = FloatField()
def to_dict(self):
return mongo_to_dict_helper(self)
class Order(Document):
userName = StringField(required=True)
orderDate = DateTimeField()
orderStatus = ListField(EmbeddedDocumentField(Status))
orderDetails = ListField(EmbeddedDocumentField(OrderDetail))
orderComments = ListField(EmbeddedDocumentField(Comment))
isActive = BooleanField()
def to_dict(self):
orderObj = mongo_to_dict_helper(self)
orderDetailList = []
for orderDetail in orderObj["orderDetails"]:
orderDetailList.append(orderDetail.__dict__)
orderObj["OrderDetails"] = orderDetailList
return (self)
Run Code Online (Sandbox Code Playgroud)
当查询mongodb时,我得到一个对象,然后使用以下函数将其转换为dict:
def mongo_to_dict_helper(obj):
return_data = []
for field_name in obj._fields:
if field_name in ("id",):
continue
data = obj._data[field_name]
if isinstance(obj._fields[field_name], StringField):
return_data.append((field_name, str(data)))
elif isinstance(obj._fields[field_name], FloatField):
return_data.append((field_name, float(data)))
elif isinstance(obj._fields[field_name], IntField):
return_data.append((field_name, …
Run Code Online (Sandbox Code Playgroud) 如何从瓶子请求处理程序返回json数据.我在瓶子src中看到了一个dict2json方法,但我不知道如何使用它.
文档中包含的内容:
@route('/spam')
def spam():
return {'status':'online', 'servertime':time.time()}
Run Code Online (Sandbox Code Playgroud)
当我打开页面时给我这个:
<html>
<head></head>
<body>statusservertime</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我曾尝试阅读Bottle的文档,但是,我仍然不确定静态文件服务是如何工作的.我有一个index.tpl
文件,并在其中附加了一个css文件,它的工作原理.但是,我正在读取Bottle不会自动提供css文件,如果页面正确加载则不能为true.
但是,在请求页面时,我遇到了速度问题.那是因为我没用过return static_file(params go here)
吗?如果有人能够清理它们的工作方式,以及在加载页面时如何使用它们,那就太棒了.
服务器代码:
from Bottle import route,run,template,request,static_file
@route('/')
def home():
return template('Templates/index',name=request.environ.get('REMOTE_ADDR'))
run(host='Work-PC',port=9999,debug=True)
Run Code Online (Sandbox Code Playgroud)
指数:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type"
content="text/html; charset=ISO-8859-1">
<title>index</title>
<link type="text/css"
href="cssfiles/mainpagecss.css"
rel="stylesheet">
</head>
<body>
<table
style="width: 100%; text-align: left; margin-left: auto; margin-right: auto;"
border="0" cellpadding="2" cellspacing="2">
<tbody>
<tr>
<td>
<h1><span class="headertext">
<center>Network
Website</center>
</span></h1>
</td>
</tr>
</tbody>
</table>
%if name!='none':
<p align="right">signed in as: {{name}}</p>
%else:
pass
%end
<br>
<table style="text-align: left; width: …
Run Code Online (Sandbox Code Playgroud) bottle ×10
python ×10
python-2.7 ×2
cherrypy ×1
class ×1
flask ×1
importerror ×1
json ×1
methods ×1
mongodb ×1
mongoengine ×1
oop ×1
pycharm ×1
sqlalchemy ×1