2016-03-04 36 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 –