我正在编写一个简单的登录页面,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 和 …
我正在构建一个 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) 我正在使用 Flask 构建一个非常简单的注册表单,我想自定义验证器的错误消息DataRequired
,Email
但是似乎我的自定义消息被忽略,并且正在打印默认消息。下面是我的代码片段
表格.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) 我想知道在 vscode 中创建文件时是否可以触发用户定义的自定义代码段。
我最近开始学习 Golang,并注意到有一些样板代码用于创建main.go
文件。
所以我为它创建了我的自定义片段,现在我可以手动触发片段并节省一些键入的按键。
我想更进一步,这样每当我main.go
在 VsCode 中创建一个命名的新文件时,它应该自动触发该代码段并为我插入 biolerplate 代码,而无需我手动触发代码段。
这甚至可能吗?
我正在学习 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) 我在使用 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)
我也关闭了自动换行并尝试了各种设置,但还没有运气。任何人有任何想法?
我在 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) 我正在使用模块编写一个简单的套接字服务器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) 我对 Go 和 Mongodb 都很陌生,正在用 Go 和 Mongo 编写我的第一个 rest-api。我正在使用mongo-go-driver
并Modal
在 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)
我不想使用ObjectId
mongo-db 提供的默认字段作为我的主键,而是希望将该Hostname
字段作为主键。
如果我将Hostname
字段的类型设置为primitive.ObjectID
,那么hostname
它将是唯一的,但它的值将由 mongodb 随机生成的字符串而不是实际的主机名字符串值。
那么有没有办法做到这一点。