2014-02-20 355 views
1

我剛剛在幾周前開始學習Django和Python,並且負責使用Django/Python/MySQL組合管理表單處理的項目。我的背景是C++,所以如果Python/Django語法中有任何C++類比可以隨意引用它們。Django「請求」對象

到目前爲止,我明白了的HTTPRequest對象做,但無法理解這樣的代碼片段:

@login_required(login_url="/some_directory/") 
def xyz(request): 
    item1 = request.GET['item1'] 
    user = request.user 
    page = Page.objects.get(title = item1) 
    item1info = {} 
    perm_all = get_perms(user,page) 
    item1info["industry"] = page.industry.split(',') 

對於第一線什麼是「@」嗎? 「@login_required」是一個Django命令還是被編碼器定義了?

我知道「def xyz(request)」定義了一個函數,但它是在另一個文件(urls.py)中預先定義的參數「request」嗎?

request.GET ['item1']做了什麼?它是從查詢字符串中檢索元素「item1」的值嗎?

+0

@login_required是裝飾者。裝飾器是Python中的一個基本概念。我建議你在嘗試理解django之前閱讀python tutorial/book。 –

回答

3
  • 「@」是DecoratorLogin required是由Django提供的裝飾器,它要求當前用戶(在request.user中)登錄才能訪問此視圖。

  • 「request」參數被Django本身調用時傳遞給View函數。任何有效的視圖函數都必須以參數形式接收請求

  • Request.GET是一個Python字典,它包含通過GET方法(作爲URL查詢字符串的一部分)在請求中傳遞的所有參數。

+0

查看功能位於何處?它在urls.py中嗎? – JKL

+0

查看功能位於您應用程序的目錄views.py中。 例如:myapp/views.py – rafaponieman