Django 我怎样才能得到“我的”呢;代码“;来自重定向url的值';谁的反应?
我编写了一个函数,以便从重定向url的响应中获取代码值,但是我无法捕获它 功能Django 我怎样才能得到“我的”呢;代码“;来自重定向url的值';谁的反应?,django,python-3.x,oauth-2.0,Django,Python 3.x,Oauth 2.0,我编写了一个函数,以便从重定向url的响应中获取代码值,但是我无法捕获它 功能 def auth_for_app(request): CLIENT_ID = "xxx" CLIENT_SECRET = "xxx" REDIRECT_URI = 'http://127.0.0.1:8000/products/auth' AUTHORIZE_URL = "https://www.example.com/admin/user/auth" ACCESS_TOK
def auth_for_app(request):
CLIENT_ID = "xxx"
CLIENT_SECRET = "xxx"
REDIRECT_URI = 'http://127.0.0.1:8000/products/auth'
AUTHORIZE_URL = "https://www.example.com/admin/user/auth"
ACCESS_TOKEN_URL = "https://www.example.com/oauth/v2/token"
STATE = "2b33fdd45jbevd6nam" # temporary state id
request.GET.get('{}?client_id={}&response_type=code&state={}&redirect_uri={}'.format(AUTHORIZE_URL, CLIENT_ID, STATE, REDIRECT_URI))
request.session['code'] = request.GET.get('code')
code = request.session['code']
print ("***AUTH START***")
print (code)
print ("***AUTH END***")
return render (request, 'products/auth.html')
我还写了print,我可以肯定我能抓住它。然而我得到了这个结果
***AUTH START***
None
***AUTH END***
编辑(添加的产品/url.py):
products/url.py
app_name = 'products'
urlpatterns = [
path('', views.IndexView.as_view(), name='base'),
path('<int:pk>/', views.DetailView.as_view(), name='detail'),
path('auth/', views.auth_for_app, name='auth_for_app'),
]
app_name='products'
URL模式=[
路径(“”,views.IndexView.as_view(),name='base'),
路径('/',views.DetailView.as_view(),name='detail'),
path('auth/',views.auth_表示_app,name='auth_表示_app'),
]
您误解了这里的某些内容
request.GET
是通过作为视图函数参数的request
对象传递给视图的查询。换句话说,如果用户转到/auth/?foo=bar
,则request.GET GET('foo')
将给出结果“bar”
这不会向其他网站提出任何请求。为此,您需要一些完全不同的东西—一个名为的第三方库。尽管名字很相似,但它们之间没有任何关系。您需要安装请求,将其导入视图文件,调用它,并对响应执行一些操作:
import requests
...
response = requests.get(AUTHORIZE_URL, params={"client_id": CLIENT_ID, "response_type": "code", "state": STATE, "redirect_uri": REDIRECT_URI})
code = response.json()['code']
对不起,此代码非常不清楚。那
请求.GET.GET…
行的意义是什么?它实际上什么也不做。请求此视图的URL的查询字符串中是否传递了代码?请显示该URL。我添加了URL。。我认为,request.GET.GET…
line向提供者应用程序发出请求,以便获取代码和状态参数@DanielRosemanI如您在这里所写的那样对其进行了更改,但我收到了以下错误:从None json.decoder.jsondecoderor中引发JSondecoderError(“期望值”,s,err.value):期望值:第2行第1列(char 1)
,因此API不会返回json。但你们并没有给出它实际是什么的任何细节,所以我们知道它会返回什么。