django spotify api python http post 500错误

django spotify api python http post 500错误,python,django,http,spotify,spotipy,Python,Django,Http,Spotify,Spotipy,您好,我正在尝试使用spotify api创建django网站,因此我正在尝试使用spotipy python库获得一些简单的示例代码,但是每当调用我的spotipy代码时,都会获得HTTPPOST 500 现在,如果您单击网站上的按钮,它会向我的一个端点发出post请求,该端点调用python函数并应该返回文本。这是python函数中的代码: import spotipy def spotifyleastplayed_py(request): print("spotifyleastp

您好,我正在尝试使用spotify api创建django网站,因此我正在尝试使用spotipy python库获得一些简单的示例代码,但是每当调用我的spotipy代码时,都会获得HTTPPOST 500

现在,如果您单击网站上的按钮,它会向我的一个端点发出post请求,该端点调用python函数并应该返回文本。这是python函数中的代码:

import spotipy

def spotifyleastplayed_py(request):
    print("spotifyleastplayed_py()")
    if request.method == 'POST':

        print("0")
        sp = spotipy.Spotify()
        print("1")
        results = sp.search(q='weezer', limit=20)
        print("2")
        print(results)

        data = "temp spotifyleastplayed_py() Return Data"
        return HttpResponse(data) #HttpResponse(json.dumps("{test:bobo}"))
调用该函数时,我的控制台输出以下错误消息:

[06/Oct/2019 21:49:03] "GET /spotifyleastplayed HTTP/1.1" 200 1992
spotifyleastplayed_py()
0
1
[06/Oct/2019 21:49:07] "POST /spotifyleastplayed_py/ HTTP/1.1" 500 6326

我是否需要将SpotipyURL添加到django的某个地方,以便库能够成功地进行调用?似乎无法向spotipy发出http请求。

首先,我建议您了解更多有关调试python代码的信息,因为这是作为开发人员必须具备的一项关键技能,它可能有助于您下次进一步解决此问题。例如,您可以从示例中推断,您的程序不会执行超出以下行的任何内容

results = sp.search(q='weezer', limit=20)
但是你得到的唯一信息是一个500返回码,它不会告诉你到底出了什么问题,只是有些地方不对劲

例如,您可以采取的第一步是尝试找出导致代码终止的确切原因。如果将语句包装在try-except块中,您将能够准确地看到正在发生的错误类型,如下所示:

try:
    results = sp.search(q='weezer', limit=20)
except Exception as e:
    print(e)
...
sp = spotipy.Spotify(auth=token)
results = sp.search(q='weezer', limit=20)
...
这将捕获语句生成的错误,并将其打印出来,这将给出以下结果:

http状态:401,代码:-1- : 没有提供代币

这已经比简单的500个错误更能说明问题了,对吧? 我不建议对代码中的每一个问题都使用这种方法,但这只是一个开始

要了解有关如何调试代码的更多信息,您可以阅读以下文章:


无论如何:

当我运行代码时,会引发
spotipy.client.SpotifyException
,因为Spotify API返回401错误代码

401(Unauthorized)表示您无权访问请求的资源,特别是对于Spotify API,这表示您需要提供有效的令牌

您需要向用户请求令牌,并在初始化spotify时传递该令牌,如下所示:

try:
    results = sp.search(q='weezer', limit=20)
except Exception as e:
    print(e)
...
sp = spotipy.Spotify(auth=token)
results = sp.search(q='weezer', limit=20)
...
如何从用户处获得该令牌取决于实现的其余部分。 我建议大家多读一读


关于人们如何在spotipy中实现授权流,还有很多其他示例,例如在

中,首先,我建议您学习更多关于调试python代码的知识,因为这是作为开发人员必须具备的一项关键技能,它可能有助于您下次进一步了解这个问题。例如,您可以从示例中推断,您的程序不会执行超出以下行的任何内容

results = sp.search(q='weezer', limit=20)
但是你得到的唯一信息是一个500返回码,它不会告诉你到底出了什么问题,只是有些地方不对劲

例如,您可以采取的第一步是尝试找出导致代码终止的确切原因。如果将语句包装在try-except块中,您将能够准确地看到正在发生的错误类型,如下所示:

try:
    results = sp.search(q='weezer', limit=20)
except Exception as e:
    print(e)
...
sp = spotipy.Spotify(auth=token)
results = sp.search(q='weezer', limit=20)
...
这将捕获语句生成的错误,并将其打印出来,这将给出以下结果:

http状态:401,代码:-1- : 没有提供代币

这已经比简单的500个错误更能说明问题了,对吧? 我不建议对代码中的每一个问题都使用这种方法,但这只是一个开始

要了解有关如何调试代码的更多信息,您可以阅读以下文章:


无论如何:

当我运行代码时,会引发
spotipy.client.SpotifyException
,因为Spotify API返回401错误代码

401(Unauthorized)表示您无权访问请求的资源,特别是对于Spotify API,这表示您需要提供有效的令牌

您需要向用户请求令牌,并在初始化spotify时传递该令牌,如下所示:

try:
    results = sp.search(q='weezer', limit=20)
except Exception as e:
    print(e)
...
sp = spotipy.Spotify(auth=token)
results = sp.search(q='weezer', limit=20)
...
如何从用户处获得该令牌取决于实现的其余部分。 我建议大家多读一读

关于人们如何在spotipy中实现授权流,还有很多其他示例,例如