2016-03-04 42 views
0

我已经创建了类和方法,如下所示。我需要获取当前页面的网址。但是在调用get_full_path()时出现错误。无法在python中获取当前网址

class A(object): 
    def get_user(request): 
     current_url = request.get_full_path() 
    return current_url 


class B(A): 
    b = A() 
    b.get_user() 
    print b.current_url 


Traceback Error: 
    AttributeError: 'A' object has no attribute 'get_full_path' 

我做了什么错误?

+2

什么是'get_user'?它是Django视图吗?你的缩进也是关闭的。 – Selcuk

+1

您在'get_user'定义中忘记'self'参数。 – ilse2005

回答

2

此代码不能工作,因为有一些误解:

  1. 你应该通过requestget_user
  2. get_user第一个参数应该是self指向一个实例。
  3. 对象无法返回值(您有return current_urlAclass)。
  4. 在这个例子中没有必要使用类继承。

您的代码应该是这样的:

class A(object): 
    current_url = None 
    def get_user(self, request): 
     self.current_url = request.get_full_path() 

b = A() 
b.get_user(request) 
print b.current_url 

或者,如果你想为完整的路径传递到class A构造函数,不管出于什么原因使用它在继承了B类:

class A(object): 
    def __init__(self, current_url): 
     self.url = current_url 

    def get_path(self): 
     return self.current_url 

class B(A): 
    # whatever you need here 
    pass 

b = B(request.get_full_path()) 
print b.get_path() # prints current path 
+0

没有..我试图调用这个方法到另一个类..正在调用该方法时没有定义像名称'请求'错误。 –

+0

@PythonTeam是的,因为可能'请求'没有被确定。如果你想将变量传递给方法(在这种情况下为'request'),它应该被定义。例如,如果你在你的视图中调用'get_user'方法,那么你有'request'变量作为第一个参数传递给view函数 - 所以它在函数范围内定义。一般来说 - 您无权查看外部请求。 – morning

+0

我该如何使用它来get_full_path –