假设我有一个用户模型
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
numLogins = db.Column(db.Integer)
def __init__(self, username, email):
self.username = username
self.email = email
def __repr__(self):
return '<User %r>' % self.username
Run Code Online (Sandbox Code Playgroud)
如何查询具有最大登录次数的用户的记录?
请多多包涵。我将首先描述书中的一个例子,然后在最后提出我的问题。
根据编程语言范式的文本:
归纳指定是指定一组值的强大方法。为了说明这个方法,我们用它来描述 自然数 N = {0, 1, 2, ... . .} .
自上而下的定义:
一个自然数 n 在 S 中当且仅当
我们知道 0 ? S. 因此 3 ? S,因为 (3 ? 3) = 0 和 0 ? S. 同样 6 ? S,因为 (6?3) = 3 和 3 ? S. 以这种方式继续,我们可以得出结论,所有 3 的倍数都在 S 中。
其他自然数呢?是 1 吗?? 我们知道 1 != 0,所以不满足第一个条件。此外,(1?3) = ?2,它不是自然数,因此不是 S 的成员。因此不满足第二个条件。
自下而上的定义:
定义集合 S 为包含在 N 中的最小集合,并满足以下两个性质:
当我使用wtf_forms和Flask-WTF创建表单并使用IntegerField输入时,我不能将它与Length验证器结合使用
如果我删除长度限制,那么它工作正常.当然我应该能够对IntegerField应用长度验证吗?
Python代码.
from flask_wtf import Form
from wtforms import TextField, PasswordField, IntegerField, validators
class RegistrationForm(Form):
firstname = TextField('First Name', [validators.Required()])
lastname = TextField('Last Name', [validators.Required()])
telephone = IntegerField('Telephone', [validators.Length(min=10, max=10, message="Telephone should be 10 digits (no spaces)")])
TypeError
TypeError: object of type 'int' has no len()
Traceback (most recent call last)
File "C:\Python27\lib\site-packages\flask\app.py", line 1701, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Python27\lib\site-packages\flask\app.py", line 1689, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "C:\Python27\lib\site-packages\flask\app.py", line 1687, in wsgi_app
response = self.full_dispatch_request()
File …Run Code Online (Sandbox Code Playgroud) 我有像这样的sqlalchemy关系(为简单而修剪):
class Parent(Base):
__tablename__ = 'Parent'
name = Column(String, nullable=False)
def __init__(self, name)
self.name = name
class Child(Base):
__tablename__ = 'Child'
name = Column(String, nullable=False)
parent = relationship(Parent, backref=backref('children')
def __init__(self, name, parent)
self.name = name
self.parent = parent
Run Code Online (Sandbox Code Playgroud)
在我的对象工作的同时:
parent = Parent("my parent")
db_session.add(parent) # must be done for other reasons not relevant to the issue.
child = Child("my child", parent)
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.但是在我执行以下操作之前,我得到了一个DB flush:
children = parent.children # using the backref causes a flush
Run Code Online (Sandbox Code Playgroud)
通过改变我定义backref /关系的方式可以避免这种情况吗?
我发现将抽象方法分成两个方法似乎很有用,一个用于公共接口,另一个用于子类重写.
通过这种方式,您可以为输入和输出添加前置条件/后置条件检查,从而可以抵御人为错误.
但我在这里关心的是它是否是蟒蛇可接受的,因为在我的小经验中我从来没有见过像这样的代码.
正常多态性
import abc
class Shape:
"""Abstract base class for shapes"""
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
def get_area(self, scale):
"""Calculates the area of the shape, scaled by a factor.
Do not blame for a silly example.
"""
pass
class Rectangle(Shape):
def __init__(self, left, top, width, height):
self.left = left
self.top = top
self.width = width
self.height = height
def get_area(self, scale):
return scale * self.width * self.height
print(Rectangle(10, 10, 40, 40).get_area(3))
# Gosh!... gets tons of 3's
print(Rectangle(10, 10, …Run Code Online (Sandbox Code Playgroud) 我正在使用type()运算符在python shell中进行实验.我注意到:
type('''' string '''')
Run Code Online (Sandbox Code Playgroud)
返回错误,扫描字符串时出错
然而:
type(''''' string ''''')
Run Code Online (Sandbox Code Playgroud)
工作正常,并回应找到一个字符串.
到底是怎么回事?它是否与type('''' string '''')被解释为的事实有关type("" "" string "" ""),因此是空字符串和未定义变量的无意义串联?
我试图让烧瓶框架与Facebook合作.我正在使用flask_canvas这样做.我在文档中找到了flask_canvas的示例(在这里找到:http://flask-canvas.readthedocs.org/en/latest/ )但是我一直收到以下错误:
AssertionError: View function mapping is overwriting an existing endpoint function: inner
Run Code Online (Sandbox Code Playgroud)
如果我注释掉该方法user(),它将运行,但是当该方法未被注释掉时,我得到上述错误.
知道如何制作它所以我可以同时使用canvas()和user()方法而不会被AssertionError抛出?
import flask_canvas
from flask import Flask, session, redirect
app = Flask(__name__)
flask_canvas.install(app)
HOST = 'localhost'
PORT = 8000
@app.route('/')
def hello_world():
return 'Hello World!'
# route your canvas-specific page
@app.canvas_route('/app/', methods=['GET','POST'])
def canvas():
return 'hello, world'
#route page requiring user data
@app.canvas_route('/user/', methods=['GET','POST'])
def user(canvas_user):
return canvas_user.request('/me')
if __name__ == '__main__':
app.run(host = HOST, port …Run Code Online (Sandbox Code Playgroud) iMac-Mark:~ Mark$ python3
Python 3.3.2 (v3.3.2:d047928ae3f6, May 13 2013, 13:52:24)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import myfile
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'myfile'
Run Code Online (Sandbox Code Playgroud)
我是Python和一般编程的新手。我读了一些有关的文章sys.path,__PATH__但我什么都不懂。
我是使用 Flask 和 Jinja2 模板进行 Web 开发的新手。模板中 HTML 表格的一行中的一列是:
<td><a> href="/plot?label={{stats[0]}}">{{stats[0]}} </a></td>
Run Code Online (Sandbox Code Playgroud)
stats[0]是一个字符串变量,可能包含“&”,例如“Eggs & Spam”。现在在视图(views.py)中:
@app.route("/plot", methods = ["GET", "POST"])
@login_required
def on_plot():
data = request.args
label_name = data['label']
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我得到的data结果ImmutableMultiDict([(' Spam', u''), ('label', u'Eggs ')])
是不正确的。相反我想要ImmutableMultiDict([('label', u'Eggs & Spam ')])
那么我该如何处理这个案子呢?我尝试这样做{{stats[0]|escape}},但没有成功。
我以为我应该得到allData的以下char数组定义的编译错误:
void MyClass::aMethod(const char* data, int size)
{
int headerSize = 50;
MyHeader header;
//size is not constant and unknown at compile time
char allData[size + headerSize]; //<<<<<==== should not allowed!! but not error??
memcpy(allData, &header, headerSize);
memcpy(allData + headerSize, data, size);
....
}
Run Code Online (Sandbox Code Playgroud)
为什么?它会产生运行时错误吗?