python - Python 脚本作为纯 Python 工作,但不适用于 Flask
问题描述
我正在编写一些从 Canvas 中提取课程信息的代码。作为纯python,它工作正常。如果我尝试将它与 Flask 合并,我会收到以下错误
requests.exceptions.MissingSchema: Invalid URL 'run/api/v1/courses/1234567': No schema supplied. Perhaps you meant http://run/api/v1/courses/1234567?
这是有问题的代码:
画布文件
import sys
from canvasapi import Canvas
def getinfo():
canvasurl = "https://canvas.instructure.com/";
canvastoken = #Redacted for this example
try:
canvastoken = sys.argv[1];
canvasurl = sys.argv[2];
except:
print()
#Create a new canvas object passing in the newly aquired url and token
canvas = Canvas(canvasurl, canvastoken);
#print(canv)
# Create a new course oject -- passing in course number as a parameter
# Course number is currently hard coded
print(canvas.get_course(1234567))
烧瓶文件代码(我试图运行的文件):
from flask import Flask
import canvas
canvas.getinfo()
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
解决方案
未提供架构通常意味着您没有在 URL 中指定http://
or 。https://
在您提供的代码中,我没有看到任何对run/api/v1/courses/1234567
. 一种可能性是,如果您在代码中url_for
的任何位置使用该方法requests
,请尝试设置_external=True
:
url = url_for('relativeURL', _external=True)
这允许 Flask 构造一个绝对 URL(即包含域的 URL)。
如果您不使用url_for
,请检查您的代码中可能在 URL 中省略了 http 或 https 的其他位置。
如果您更新您的问题以包含引用违规 URL 的部分,我们或许能够提供更具体的帮助。
推荐阅读
- c# - 使用 iTextSharp 向 PDF 添加数字签名 - 智能卡证书(PIN 保护)
- amazon-web-services - 是否可以将数据从 AWS Lambda 传递到 Docker 映像中的 java 程序?
- pandas - 将复合列拆分成我可以旋转的东西
- powershell - 使用 ConvertToDateTme 变量创建 CSV
- kiba-etl - 使用 kiba ETL 检查 CSV 文件标头的最佳位置
- javascript - 总是得到“(0,_reactDom.h)不是函数”或“h未定义”
- java - 无法将命令代理到远程服务器。原始错误:错误:读取 ECONNRESET
- azure-active-directory - 从 Azure AD B2C 自定义策略调用受 OAuth 保护的 REST api
- pygame - 似乎无法同时选择多个圈子
- mobile - 带有附加/前缀下拉列表的文本表单