在python请求模块中发送用户数据

时间:2017-03-22 07:26:02

标签: python django python-requests

我无法发送用户详细信息以及请求模块我必须在数据有效负载中硬编码用户详细信息以识别用户。

    full_url = ''.join(['http://', get_current_site(request).domain, '/am/reply'])
    data = {    
               'agent_type':'trigger',
               'input':platform,
               'userid':request.user.id ####==>> had to send userid like this
           } 
    a = requests.get(full_url,params=data)

是否可以使用请求发送所有常规请求数据。?

而且请求url我已实现的目标视图

def index(request):
    if not request.user.is_authenticated:
        return HttpResponseRedirect(reverse('login'))

当通过请求模块访问url时,request.user.id为none 一般来说,如何在使用请求模块时验证请求

2 个答案:

答案 0 :(得分:1)

  

Django使用请求和响应对象来通过系统传递状态。

     

当请求页面时,Django会创建一个包含有关请求的元数据的HttpRequest对象。然后Django加载适当的视图,将HttpRequest作为第一个参数传递给视图函数。每个视图都负责返回一个HttpResponse对象。

     

Django的contrib应用程序中包含的一些中间件在请求中设置了属性。如果您没有在请求中看到该属性,请确保相应的中间件类如authenticationmiddleware,sessionmiddleware。

当且仅当用户通过身份验证时,以下代码才会给user.id

def myview(request):
    if request.user.is_authenticated:
        print request.user.id
    else:
        ... # Do something else.

https://docs.djangoproject.com/en/1.10/ref/request-response/

答案 1 :(得分:0)

如果我正确理解了您的问题,您将在一个视图中获取请求,然后使用请求模块调用其他视图。在这种情况下,索引视图中的请求对象将完全不同,因为该请求是从应用程序工作的服务器发送的,而不是从用户发送的。您只能使用request.GET.get("userid")等在索引视图中获取数据。然后,如果您需要用户信息,只需使用userid从数据库中再次获取它。无法使用请求库将请求对象传递到其他视图。