小编Roh*_*hit的帖子

Flask-Login - 自动记住我

我正在编写一个简单的登录页面,flask-login并尝试实现“记住我”功能。

令我惊讶的是,“记住我”会自动工作,无需remember=True在功能中进行设置login_user,当我登录后关闭浏览器然后再次重新打开时,我的登录会话仍然存在。

我什至尝试remember=False显式设置,但登录仍然持续,浏览器关闭。下面是我的观点

@app.route("/login", methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.filter_by(username=form.username.data).first()
        if user is not None and user.verify_password(form.password.data):
            if form.remember_me.data:
                 login_user(user, remember=True, duration=timedelta(days=5))
            else:
                login_user(user)
                # login_user(user, remember=False) 
            flash('Successful Login', 'success')
            next_url = request.args.get('next')
            if not next_url or url_parse(next_url).netloc != '':
                return redirect(url_for("thankyou"))
            return redirect(next_url)
        else:
            flash('Incorrect Username or Password', 'danger')
            form.username.data = ''
            form.password.data = ''
    return render_template("login.html", form=form)
Run Code Online (Sandbox Code Playgroud)

我是否遗漏了什么或者我的实施有问题?我已经用 chrome 和 …

flask flask-login

11
推荐指数
0
解决办法
9077
查看次数

OpenAPI 缺少 FastAPI 应用程序中某些 Pydantic 模型的架构

我正在构建一个 FastAPI 应用程序,其中有很多 Pydantic 模型。尽管应用程序运行良好,但正如预期的那样,OpenAPI (Swagger UI) 文档并未在该Schemas部分下显示所有这些模型的架构。

这是pydantic的内容schemas.py

import socket
from datetime import datetime
from enum import Enum
from typing import Any, Dict, List, Optional, Set, Union

from pydantic import BaseModel, Field, validator
from typing_extensions import Literal

ResponseData = Union[List[Any], Dict[str, Any], BaseModel]


# Not visible in Swagger UI
class PageIn(BaseModel):
    page_size: int = Field(default=100, gt=0)
    num_pages: int = Field(default=1, gt=0, exclude=True)
    start_page: int = Field(default=1, gt=0, exclude=True)

# visible under schemas on Swagger UI
class …
Run Code Online (Sandbox Code Playgroud)

python swagger openapi pydantic fastapi

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

Wtforms 自定义验证消息被忽略

我正在使用 Flask 构建一个非常简单的注册表单,我想自定义验证器的错误消息DataRequiredEmail但是似乎我的自定义消息被忽略,并且正在打印默认消息。下面是我的代码片段

表格.py

class SignUp(FlaskForm):
    username = StringField('Username', validators=[DataRequired(message='Must be filled'), length(min=4, max=10)])
    email = EmailField('Email', validators=[DataRequired(message='Email can\'t be blank'),
                                            Email(message='valid email address required')])
    password = PasswordField('Password', validators=[DataRequired()])
    confirm_password = PasswordField('Confirm Password',
                                     validators=[DataRequired(), EqualTo('password', 'Passwords must match')])
    submit = SubmitField('Register')
Run Code Online (Sandbox Code Playgroud)

注册.html

{% extends "base.html" %}
{% from "jinja_helpers.html" import render_field %}
{% from "jinja_helpers.html" import render_button %}
{% block body %}
    <div class="container mt-4">
        <form action="" method="POST">
            {{ form.hidden_tag() }}
            {{ render_field(form.username) }}
            {{ render_field(form.email) …
Run Code Online (Sandbox Code Playgroud)

flask flask-wtforms

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

VsCode - 在文件创建时触发片段

我想知道在 vscode 中创建文件时是否可以触发用户定义的自定义代码段。

我最近开始学习 Golang,并注意到有一些样板代码用于创建main.go文件。

所以我为它创建了我的自定义片段,现在我可以手动触发片段并节省一些键入的按键。

我想更进一步,这样每当我main.go在 VsCode 中创建一个命名的新文件时,它应该自动触发该代码段并为我插入 biolerplate 代码,而无需我手动触发代码段。

这甚至可能吗?

code-snippets visual-studio-code

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

Flask 表单未提交

我正在学习 Flask 并尝试构建一个非常简单的应用程序,其中几乎没有创建新用户和搜索现有用户的部分。创建/注册新用户部分工作正常,但由于某种原因,搜索功能无法按预期工作,因为表单未提交。我试图查看我想到的所有可能的情况,也搜索了 Stackoverflow,但无法修复它。

注册功能代码:

表格.py

from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired, length

class Register(FlaskForm):
    name = StringField('name', validators=[DataRequired(), length(min=1, max=30)])
    email = StringField('email', validators=[DataRequired()])
    submit = SubmitField('Register')

class UserSeacrh(FlaskForm):
    name = StringField('name', validators=[DataRequired()])
    email = StringField('email', validators=[DataRequired()])
    submit = SubmitField('Search')
Run Code Online (Sandbox Code Playgroud)

视图.py

@app.route("/register", methods=['GET', 'POST'])
def register():
    form = Register()
    if form.validate_on_submit():
        db.create_all()
        user = CreateUser(form.name.data, form.email.data)
        db.session.add(user)
        db.session.commit()
        flash('User {} created successfully'.format(form.name.data))
        return redirect(url_for("register"))
    return render_template("register.html", form=form, title='New User Registration')


@app.route("/search", methods=['GET', …
Run Code Online (Sandbox Code Playgroud)

python forms flask

5
推荐指数
2
解决办法
1万
查看次数

VScode 在保存时自动添加新行

我在使用 vscode 时遇到了这个问题,每当我保存 HTML 文件时,它都会自动添加新行。这不是因为任何扩展,因为我通过启动不带扩展的 vscode 进行了测试。下面是我想说的

这就是我想要的样子:

    <li><span>X</span></li>
    <li><span>X</span></li>
    <li><span>X</span></li>
    <li><span>X</span></li>
    <li><span>X</span></li>
    <li><span>X</span></li>
Run Code Online (Sandbox Code Playgroud)

这就是当我按 ctrl-s 时 vscode 把它变成的

    <li>
        <span>X</span>
    </li>
    <li>
        <span>X</span>
    </li>
    <li>
        <span>X</span>
    </li>
    <li>
        <span>X</span>
    </li>
    <li>
        <span>X</span>
    </li>
    <li>
        <span>X</span>
    </li>
Run Code Online (Sandbox Code Playgroud)

我也关闭了自动换行并尝试了各种设置,但还没有运气。任何人有任何想法?

visual-studio-code

5
推荐指数
2
解决办法
8675
查看次数

Jinja html 模板在 Vim 中使用 ALE 和 Prettier 进行格式化

我在 Ubuntu 16.04 LTS 上使用 NVIM v0.3.2-208-g2841e89 并使用 ALE 作为我的 Linting 引擎插件。我在格式化 jinja 模板 html 文件时遇到问题prettier

以 tag 开头并包含 jinja 代码的 html 文件 <html>根本没有被格式化。当我运行ALEFix这些文件时,没有任何反应。

以 line 开头的 html 文件{% extends %}正在格式化,但方式不正确。当我运行ALEFix这些文件时,代码开始看起来是这样的。

原始文件

{% extends "home.html" %}
{% block body %}
<div class="jumbotron">
<p>Thank you {{ session['username'] }} for signing up !!</p>
</div>

{% endblock %}
Run Code Online (Sandbox Code Playgroud)

格式化文件

{% extends "home.html" %} {% block body %}
<div class="jumbotron">
  <p>Thank you {{ session['username'] }} …
Run Code Online (Sandbox Code Playgroud)

vim prettier

5
推荐指数
1
解决办法
2734
查看次数

socketserver - 允许重用地址重新绑定现有端口号在不覆盖类变量的情况下不起作用

我正在使用模块编写一个简单的套接字服务器socketserver,除了一件小事情之外,一切似乎都工作得很好。我将服务器绑定到某个端口,然后设置server.allow_reuse_address = True为重用同一端口,而不必等待内核释放底层端口。但是,如果在创建服务器实例后修改变量,则它不起作用server.allow_reuse_address = True,但如果我为服务器创建自定义类,然后覆盖其中的变量,则一切正常。

下面是我的代码。

import socketserver
import sys

class MyTCPRequestehandler(socketserver.BaseRequestHandler):
    def handle(self):
        self.data = self.request.recv(1024)
        while self.data:
            print('Received {} from {}'.format(self.data.decode().strip(), self.client_address))
            self.request.send(self.data.upper())
            self.data = self.request.recv(1024)


if __name__ == '__main__':
    try:
        server = socketserver.TCPServer(('', 12345), MyTCPRequestehandler)
        ip, port = server.server_address
        server.allow_reuse_address = True
        print(server.allow_reuse_address)
        print('Server listening on port {}'.format(port))
        # server.handle_request()
        server.serve_forever()
    except KeyboardInterrupt:
        sys.exit()
Run Code Online (Sandbox Code Playgroud)

如果在断开连接后重新运行应用程序,我会收到此错误

File "/Documents/PythonPrograms/network-modules/socketServer/simplesocketserver.py", line 16, in <module>
    server = socketserver.TCPServer(('', 12345), MyTCPRequestehandler)
  File "/spare/ssd/rbhanot/anaconda3/lib/python3.6/socketserver.py", line 453, in …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

4
推荐指数
1
解决办法
2371
查看次数

在 Mongo-go-driver 中创建一个独特的领域

我对 Go 和 Mongodb 都很陌生,正在用 Go 和 Mongo 编写我的第一个 rest-api。我正在使用mongo-go-driverModal在 Go 中有以下结构

type Modal struct {
    Group     []string           `bson:"group" json:"group"`
    Hostname  string             `bson:"hostname" json:"hostname"`
    Overrides map[string]string  `bson:"overrides" json:"overrides"`
    Excludes  []string           `bson:"excludes" json:"excludes"`
}
Run Code Online (Sandbox Code Playgroud)

我不想使用ObjectIdmongo-db 提供的默认字段作为我的主键,而是希望将该Hostname字段作为主键。

如果我将Hostname字段的类型设置为primitive.ObjectID,那么hostname它将是唯一的,但它的值将由 mongodb 随机生成的字符串而不是实际的主机名字符串值。

那么有没有办法做到这一点。

go mongodb bson mongo-go

2
推荐指数
1
解决办法
4742
查看次数