首页 > 解决方案 > 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()

标签: pythonwebflask

解决方案


未提供架构通常意味着您没有在 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 的部分,我们或许能够提供更具体的帮助。


推荐阅读