分类目录归档:Flask

二分法查找

检查长度为n的列表,二分查找需要进行log n 次操作,使用大O表示法即O(log n)

def binary_search(list, item):
    """
    二分查找
    :param list:
    :param item:
    :return:
    """
    low = 0
    high = len(list) - 1

    while low <= high:
        mid = int((low + high) / 2)
        guess = list[mid]
        if guess == item:
            return mid
        if guess > item:
            high = mid - 1
        else:
            low = mid + 1
    return None


list = [1, 3, 5, 7, 9, 12]

print(binary_search(list, 12))

Flask下拉列表与数据库同步问题解决记录

刚开始 我的表单是这么写的

forms.py:

tags = Tag.query.all()

class MovieForm(FlaskForm):
    """电影表单"""
    tag_id = SelectField(
        label="标签",
        validators=[DataRequired("请选择标签")],
        description="标签",
        coerce=int,
        choices=[(v.id, v.name) for v in tags],
        render_kw={"class": "form-control"}
    )

在表单类之外 先执行 查询标签的 动作 tags = Tag.query.all(),但是我发现我在另外一个页面添加标签成功之后,返回在电影添加页面 进行tag选取时,下拉框中出现的内容并没有刚才新添加的tag,
怀疑是tags = Tag.query.all()这条语句并没有被调用

继续阅读

FlaskForm自定义验证函数

这是一个用户注册的视图函数:

@home.route("/register/", methods=["GET", "POST"])
def register():
    form = RegisterForm()

    if form.validate_on_submit():
        data = form.data
        user = User(
            name=data["name"],
            email=data["email"],
            phone=data["phone"],
            pwd=generate_password_hash(data["pwd"]),
            uuid=uuid4().hex
        )
        db.session.add(user)
        db.session.commit()
        flash("注册成功", "ok")

用户注册时 怎么验证用户名或者邮箱已经存在呢?

继续阅读