如何获得请求.user.id在Djang中使用Python查询同一函数的值

2024-09-30 20:25:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Django中的类和函数感到很困惑,所以我不确定我是否努力做到这一点。在

1)我有一个函数,我在那里做API查询。我希望这里有API令牌从2(见下文)。在

def API_search(request):
    query = request.GET.get('query')
    final_url =  urllib2.Request('http://api.website.com', None, headers={'Content-Type':'application/json'})
    base64string = base64.encodestring('%s:%s' % ('myusername', 'mypassword')).replace('\n', '')
    final_url.add_header("Authorization", "Basic %s" % base64string)   
    json_obj = urllib2.urlopen(final_url)
    readable_json = json.load(json_obj)
    resultsOpen = []
    for i in readable_json:
        resultsOpen.append({
            'subject': i['subject'],
            })
return render(request, 'index/apiTest.html', {'objects_open': resultsOpen)

2)我有一个基于类的函数,查询数据库并返回当前用户的API令牌。现在只显示站点上的API令牌。我希望它在API查询中。在

^{pr2}$

这两种方法都使用不同的模板,但我不想要。我想在API查询中使用API token变量上下文。我该怎么做?在

编辑:已添加网址.py在

from django.conf.urls import url
from index.views import UserDetail
from index import views

urlpatterns = [
    url(r'^dbquery/$', UserDetail.as_view()),
    url(r'^apitest/$', views.API_search),
]

Tags: 函数fromimportapijsonurlsearchindex
1条回答
网友
1楼 · 发布于 2024-09-30 20:25:17

在您的urls.py中创建一个url定义,该定义调用API_search函数。在UserDetailView中,将生成的url存储在href中,当用户单击它时,调用API搜索函数。在

或者

如果要直接从UserDetailView调用API_搜索,请在生成正确的url后调用对该url的HttpRedirectResponse。在

编辑: 根据提供的额外信息,您可以使用:

def API_search(request):
    user = request.user
    token = UserTokens.objects.values_list('apiToken', flat=True).get(pk=user.id)
    query = request.GET.get('query')
    final_url =  urllib2.Request('http://api.website.com', None, headers={'Content-Type':'application/json'})
    #use the token as you like
    base64string = base64.encodestring('%s:%s' % ('myusername', 'mypassword')).replace('\n', '')
    final_url.add_header("Authorization", "Basic %s" % base64string)   
    json_obj = urllib2.urlopen(final_url)
    readable_json = json.load(json_obj)
    resultsOpen = []
    for i in readable_json:
        resultsOpen.append({
            'subject': i['subject'],
            })
return render(request, 'index/apiTest.html', {'objects_open': resultsOpen)

相关问题 更多 >