我正在努力阻止默认的“Home.vue 路由在 Vuetify 中不处于活动状态,即当我单击上传或设置时,默认的 Home.vue 仍然处于活动状态。看这里:
我认为这与它是 /webapp 的子路线有关,但我正在用头撞墙..
这是我的路线中的重要部分:
{
path: '/webapp',
name: 'webapp',
component: () => import('./views/Webapp.vue'),
children: [
{
path: '',
component: () => import('./components/Home.vue'),
},
{
path: 'uploads',
component: () => import('./components/Uploads.vue'),
},
{
path: 'settings',
component: () => import('./components/Settings.vue'),
}
]
}
Run Code Online (Sandbox Code Playgroud)
这是我的 Vuetify 抽屉:
<v-navigation-drawer
v-model="drawer"
app
>
<v-list dense>
<v-list-item
v-for="item in items"
:key="item.title"
:to="item.route"
>
<v-list-item-icon>
<v-icon>{{ item.icon }}</v-icon>
</v-list-item-icon>
<v-list-item-content>
<v-list-item-title>{{ item.title }}</v-list-item-title>
</v-list-item-content>
</v-list-item>
</v-list>
</v-navigation-drawer>
Run Code Online (Sandbox Code Playgroud) 我有一个带有Flask Jinja for循环的HTML模板,它会生成一个表格,如下所示:
<tbody>
{% for segment in segment_details %}
<tr>
<td>{{segment}}</td>
<td>{{segment_details['{{segment}}']}}</td>
</tr>
{% endfor %}
</tbody>
Run Code Online (Sandbox Code Playgroud)
我正在尝试遍历不同长度/键的文档,并将表中的每一行显示为键和值.在我的Python代码中,我得到了这个在shell中有所需的响应:
for item in segment_details:
print(item, segment_details[item])
Run Code Online (Sandbox Code Playgroud)
但是在Flask中,我正确地列出了所有行的项目,但是
{{segment_details['{{segment}}']}}
没有产生任何价值,我尝试过使用和不使用单引号.这可能吗?
我正在使用 Flask-Security 为我的应用程序设置用户身份验证,但我正在努力获取当前登录用户的电子邮件地址或 ID,以便我可以查询包含该特定用户详细信息的表。我只是使用标准代码。
这里的另一个问题提出了以下建议,但没有奏效:
my_user = current_user.get_id()
Run Code Online (Sandbox Code Playgroud)
标准代码:
from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy
from flask_security import Security, SQLAlchemyUserDatastore, \
UserMixin, RoleMixin, login_required
# Create app
app = Flask(__name__)
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'super-secret'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite://'
# Create database connection object
db = SQLAlchemy(app)
# Define models
roles_users = db.Table('roles_users',
db.Column('user_id', db.Integer(), db.ForeignKey('user.id')),
db.Column('role_id', db.Integer(), db.ForeignKey('role.id')))
class Role(db.Model, RoleMixin):
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(80), unique=True)
description = db.Column(db.String(255))
class User(db.Model, UserMixin): …Run Code Online (Sandbox Code Playgroud) 我正在尝试从此处的代码刷新 JWT 令牌。问题在于如何通过刷新获取新令牌。
这有效:
curl http://127.0.0.1:5000/protected
{"msg":"Missing Authorization Header"}
Run Code Online (Sandbox Code Playgroud)
这有效,我得到了我的令牌并将其放入 ACCESS
curl -H "Content-Type: application/json" -X POST -d '{"username":"test","password":"test"}' http://localhost:5000/login
Run Code Online (Sandbox Code Playgroud)
这有效,我得到了我的用户名
curl -H "Authorization: Bearer $ACCESS" http://localhost:5000/protected
Run Code Online (Sandbox Code Playgroud)
但是,当令牌过期时,如何使用刷新令牌和/或访问令牌获取 curl 以获取新的访问令牌?我已经尝试了许多 POST,但似乎没有任何效果:
https://flask-jwt-extended.readthedocs.io/en/latest/refresh_tokens.html
from flask import Flask, jsonify, request
from flask_jwt_extended import (
JWTManager, jwt_required, create_access_token,
jwt_refresh_token_required, create_refresh_token,
get_jwt_identity
)
app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'super-secret' # Change this!
jwt = JWTManager(app)
@app.route('/login', methods=['POST'])
def login():
username = request.json.get('username', None)
password = request.json.get('password', None)
if username != 'test' or password != …Run Code Online (Sandbox Code Playgroud) 我在 VueJS 应用程序中使用vue-recaptcha-v3,但立即出现错误。我的 main.js 看起来像这样:
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import Buefy from 'buefy'
import 'buefy/dist/buefy.css'
import { VueReCaptcha } from 'vue-recaptcha-v3'
Vue.use(VueReCaptcha, { siteKey: 'MYSITEKEY' })
Vue.use(Buefy)
Vue.config.productionTip = false
new Vue({
router,
store,
render: h => h(App)
}).$mount('#app')
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我点击保存时,出现以下错误(包括截图):
未捕获的类型错误:vue_1.ref 不是函数
这与 vue-recaptcha-v3 包的以下部分有关:
exports.VueReCaptcha = {
install: function (app, options) {
var isLoaded = vue_1.ref(false);
var instance = vue_1.ref(undefined);
Run Code Online (Sandbox Code Playgroud)
不知道从这里去哪里......
我有一个 LibreOffice Calc 电子表格,需要从每一行的单元格中提取一个小字符串。单元格包含大约一段文本,看起来与下面类似,但都有不同的单词、长度等。一个共同点是我需要提取的文本的实际格式,在这种情况下,17/11/2016 09:00但可以是任何日期/时间像 24 小时格式那样格式化。
Lorem Ipsum 只是印刷和排版行业的虚拟文本。
17/11/2016 09:00自 1500 年代以来,Lorem Ipsum 一直是行业标准的虚拟文本,当时一位不知名的印刷商使用了一个类型的厨房并争先恐后地制作了一本类型样本书。
我搜索了以下站点,但无法将其连接在一起以进行匹配,更不用说提取实际字符串了。
http://regexlib.com/DisplayPatterns.aspx?cattabindex=4&categoryId=5
有人能指出我正确的方向吗?
我已经设置了一个测试 MongoDb Atlas 帐户,只是其中一个免费帐户,并且在我的 Ubuntu 机器上使用以下代码我可以成功创建用户并搜索它们。
当我在 MacBook Air 上尝试完全相同的事情时,我得到了如下所示的 SSL 握手。
pymongo.errors.ServerSelectionTimeoutError: SSL 握手失败: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:833),SSL 握手失败: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:833),SSL 握手失败[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:833)
import pymongo
client = pymongo.MongoClient("mongodb+srv://MYUSERNAME:MYPASSWORD@cluster0-ABCDEF.mongodb.net/test")
db = client.johnny
collection = db.myjohnnytest
example = {'name' : 'Johnny',
'email' : 'johnny@test.net'}
user_id = collection.insert_one(example).inserted_id
Run Code Online (Sandbox Code Playgroud)
我发现这个答案似乎是关键:
但是我已经尝试过这个,无论我是完全遵循它还是激活我的 virtualenv,我都会收到以下错误:
找不到激活的 virtualenv(必需)。回溯(最近一次调用):文件“”,第 44 行,文件“”,第 25 行,主文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py” ,第 291 行,在 check_call 中引发 CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6', '-E', '-s' , '-m', 'pip', 'install', '--upgrade', 'certifi']' 返回非零退出状态 3. …
我正在尝试使用 Flask-Security 文档中的标准基本示例,并使其工作,但密码以明文形式存储。
我知道这一行:
user_datastore.create_user(email='matt@nobien.net', password='password')
Run Code Online (Sandbox Code Playgroud)
我可以改为:
user_datastore.create_user(email='matt@nobien.net', password=bcrypt.hashpw('password', bcrypt.gensalt()))
Run Code Online (Sandbox Code Playgroud)
但我认为 Flask-Security 处理了(双重?)加盐加密,如果我添加 app.config['SECURITY_REGISTERABLE'] = True 并转到 /register 数据库这次是正确加密的。
我知道我错过了一些简单的东西,但不太明白在哪里..
from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy
from flask_security import Security, SQLAlchemyUserDatastore, UserMixin, RoleMixin, login_required
import bcrypt
# Create app
app = Flask(__name__)
app.config['DEBUG'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SECRET_KEY'] = 'super-secret'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///login.db'
app.config['SECURITY_PASSWORD_HASH'] = 'bcrypt'
app.config['SECURITY_PASSWORD_SALT'] = b'$2b$12$wqKlYjmOfXPghx3FuC3Pu.'
# Create database connection object
db = SQLAlchemy(app)
# Define models
roles_users = db.Table('roles_users',
db.Column('user_id', db.Integer(), db.ForeignKey('user.id')), …Run Code Online (Sandbox Code Playgroud) 我有一个表单正在向 Flask 提交发布请求。一切都很完美,除非未勾选复选框会导致 400 错误,除非我对每个选项都有一个 try: except: catch 。
挑战是我有很多复选框,似乎有一个比仅仅进行十几个 try: except: 检查更好的方法。
请问有没有更Pythonic的方式来做到这一点?
目前 HTML 看起来像这样:
<div class="control">
<label class="checkbox">
<input name="option_1" type="checkbox">
Option 1
</label>
</div>
Run Code Online (Sandbox Code Playgroud)
我的 Python 代码如下所示:
try:
print(request.form['option_1'])
except:
print("option_1 not selected")
Run Code Online (Sandbox Code Playgroud) 我在本地使用以下库来连接到完美运行的远程服务器:
https://pypi.org/project/sshtunnel/
但我需要将我的 Python 函数托管为 Google Cloud Function。不幸的是,该库似乎只能接受文件,而不能直接接受字符串形式的密钥。这是配置:
server = SSHTunnelForwarder(
SERVER_HOST,
ssh_username=SSH_USERNAME,
ssh_pkey="my_filename.pem",
remote_bind_address=('127.0.0.1', 5412)
)
Run Code Online (Sandbox Code Playgroud)
如果我尝试插入这样的内容:
SSH_KEY = """-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----"""
Run Code Online (Sandbox Code Playgroud)
然后将 ssh_pkey 行修改为:
ssh_pkey=SSH_KEY
Run Code Online (Sandbox Code Playgroud)
我的期望是它会起作用,但看起来图书馆不允许这样做。我查看了这里的源代码,看来这就是导致问题的原因。
@staticmethod
def get_keys(logger=None, host_pkey_directories=None, allow_agent=False):
"""
Load public keys from any available SSH agent or local
.ssh directory.
Arguments:
logger (Optional[logging.Logger])
host_pkey_directories (Optional[list[str]]):
List of local directories where host SSH pkeys in the format
"id_*" are searched. For example, ['~/.ssh']
.. versionadded:: 0.1.0
allow_agent (Optional[boolean]): …Run Code Online (Sandbox Code Playgroud) 我在这里用谷歌搜索过,但找不到我理解的解释。我有一个值被传递到 html 模板,其值为 53.0,它是从 3rd 方 API 获得的。
我的代码是:
£{{product_details.UnitPrice}}
Run Code Online (Sandbox Code Playgroud)
显示 53.0 英镑,有没有办法将其格式化为 2 个小数位浮点数,以便正确读取 53.00 英镑。
我曾尝试从 github阅读这里的一些说明,但我不明白它们。我试图避免在我的实际 Python 代码中单独格式化每个变量,或者这是错误的方法?
我正在编辑这个问题,因为根据我的评论:
£{{product_details.UnitPrice|float}}
Run Code Online (Sandbox Code Playgroud)
没有任何区别,我不明白给出的链接。
我已经阅读了许多其他关于将模型与主应用程序分离的帖子,但我无法让它仅与 app.py(我的实际应用程序)和 models.py(我的数据库模型)一起使用。
如果我执行以下操作,我会得到一个没有表的 app.db 文件:
from app import db
db.create_all()
Run Code Online (Sandbox Code Playgroud)
如果我执行以下操作,我会收到 RuntimeError: No application found。在视图函数中工作或推送应用程序上下文。:
from app import db
db.create_all()
Run Code Online (Sandbox Code Playgroud)
我还查看了上下文介绍页面,但无法弄清楚我将 def create_app(): 放在哪里,在我的情况下,它似乎都不起作用。
这是我的 app.py:
from flask import Flask, render_template, request
from flask_sqlalchemy import SQLAlchemy
from models import userTable
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
@app.route('/', methods=['GET', 'POST'])
def home():
return "home"
if __name__ == '__main__':
app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)
这是我的models.py:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class userTable(db.Model):
__tablename__ = "userTable" …Run Code Online (Sandbox Code Playgroud) 问题说明了一切,但我在 Buefy 中有 3 个选项卡,前两个(摘要和详细信息)我已经涵盖并按预期正常工作,但第三个选项卡是一个注销按钮,因此当我单击它时,我想触发一个方法警报(””)。
我的 buefy 标签只是来自这里的标准页面,看起来像:
<b-tabs type="is-toggle" expanded>
<b-tab-item label="Pictures" icon="google-photos"></b-tab-item>
<b-tab-item label="Music" icon="library-music"></b-tab-item>
<b-tab-item label="Logout" icon="logout"></b-tab-item>
</b-tabs>Run Code Online (Sandbox Code Playgroud)
我试过在 b-tab-item 中点击一下,但这没有用,文档说有一个事件:
input Triggers when tab is clicked index: Number
Run Code Online (Sandbox Code Playgroud)
但我不知道如何捕获第三个选项卡已被单击以触发一些代码。
python ×7
flask ×6
jinja2 ×2
vue.js ×2
buefy ×1
bulma ×1
javascript ×1
macos ×1
mongodb ×1
pymongo ×1
python-3.x ×1
recaptcha-v3 ×1
regex ×1
ssh-tunnel ×1
ssl ×1
vue-router ×1
vuejs2 ×1
vuetify.js ×1