我收到以下错误:
RuntimeError: cannot access configuration outside request
Run Code Online (Sandbox Code Playgroud)
从执行以下代码:
# -*- coding: utf-8 -*-
from flask import Flask, request, render_template, redirect, url_for
from flaskext.uploads import UploadSet, configure_uploads, patch_request_class
app = Flask(__name__)
csvfiles = UploadSet('csvfiles', 'csv', "/var/uploads")
@app.route("/")
def index():
return "Hello World!"
@app.route('/upload', methods=['GET', 'POST'])
def upload():
if request.method == 'POST' and 'csvfile' in request.files:
filename = csvfiles.save(request.files['csvfile']) # the error occurs here!
return redirect(url_for('index'))
return render_template('upload.html')
if __name__ == "__main__":
app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)
我不明白错误信息本身,我不知道如何解决问题.我阅读官方文档,似乎我必须做一些配置(在哪里存储上传),但我不知道如何以正确的方式做到这一点.
我正在使用Flask-Uploads扩展程序.
这是在python 2.7虚拟环境中运行的,其中包含以下已安装的软件包:
Flask==0.10.1
Flask-Uploads==0.1.3
Jinja2==2.7.2 …Run Code Online (Sandbox Code Playgroud) 我正在GitHub上搜索我的软件项目的正确许可证.我只使用免费的GitHub-Repository,所以它必须是一个OpenSource-License(这对我来说没问题).我非常喜欢Creative Commons许可证,因为它们很容易理解 - 但它们不适用于软件......
因此,在创意公共条款中,我搜索许可证:
归因 - 您必须以作者或许可人指定的方式对作品进行归因(但不得以任何方式表明他们认可您或您对作品的使用).
非商业性 - 您不得将此作品用于商业用途.
共享 - 如果您更改,转换或以此作品为基础,您可以仅在与此作品相同或类似的许可下分发作品.
对于我自己,我希望保留商业使用我的软件的权利(即使我目前不打算这样做).
另外我想给我的软件项目中的图形一个自己的许可证 - 在这里我可以使用CC BY-NC-SA,对吧?如何在GitHub中正确管理?我可以上传(免费)github存储库中的图像,在该特殊文件夹中使用该许可证,还是我必须为其获取外部源?(因为它与GitHubs对免费存储库的要求不匹配)
我的问题的简短摘要:
我使用亚马逊产品 API 5 并希望检索带有描述的产品。在旧版本中,这可以通过 itemlookup 实现。在新版本中只有getitem。但这并没有在 Json 中提供产品说明。有没有人知道如何通过 API 获取产品描述?
对 API 端点的请求:
POST https://advertising-api-eu.amazon.com/v2/asins/report
官方文档:https :
//advertising.amazon.com/API/docs/en-us/reference/sponsed-products/2/reports
标题:
Authorization: Bearer Atza|xxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json
Amazon-Advertising-API-ClientId: xxxxxxxxxxxxxxxxxxxxxxxxxx
Amazon-Advertising-API-SCOPE: xxxxxxxxxxxxxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)
要求:
{
"segment": "query",
"reportDate":"20200201",
"metrics": "campaignName,campaignId,adGroupName,adGroupId,keywordId,keywordText,asin,otherAsin,currency,matchType,attributedUnitsOrdered30d,attributedUnitsOrdered30dOtherSKU,attributedSales30dOtherSKU"
}
Run Code Online (Sandbox Code Playgroud)
回复:
{
"code": "400",
"details": "Missing campaign type",
"requestId": "7Q8PMWM2618KAS0VEG87"
}
Run Code Online (Sandbox Code Playgroud)
题:
我认为错误消息具有误导性(因为我检查了两次文档并且因为我以前使用 API 的经验)。但真正的错误是什么?我如何获得 ASIN 报告?
我是 WSL2 的新手,但到目前为止它真的很好用。我有一个简单的 HTML 页面,我想用 Nginx 提供服务,但我希望它可以通过主机上的 Web 浏览器访问。默认的 nginx 网页有效(!),所以我开始模仿默认的 nginx html 页面(/var/www/html/index.html)。
我创建了:
/var/www/test.dev/index.html
/etc/nginx/sites-available/test.dev(sites-enabled/中的+符号链接)
Nginx 配置:
server {
listen 9000;
listen [::]:9000;
server_name test.dev;
root /var/www/test.dev;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Run Code Online (Sandbox Code Playgroud)
所以与默认配置的唯一大不同是端口 9000。
我重新加载/重新启动 nginx 并尝试卷曲我的配置:
$ curl https://localhost
$ curl https://localhost:9000
Run Code Online (Sandbox Code Playgroud)
两个请求都成功了。
但现在我想使用网络浏览器访问我的 Windows 主机上的页面。第一个(默认)有效,我可以看到默认的 Nginx HTML 页面。第二个不起作用:网站无法访问。
所以我的问题:
1. 为什么会这样?我是否必须对 Windows 防火墙设置进行一些更改?
2. 我喜欢有一个像 example.com 这样的虚拟主机名而不是 localhost:9000
我已经编辑了 /etc/hosts ... 它可以与 curl 一起使用,但又不在主机浏览器中