2014-05-01 43 views
0

至於爲這個簡單的是,我遇到了麻煩GET參數的d通過GET參數從蟒蛇視圖模板

我點擊像一個鏈路上的價值:

http://127.0.0.1:8000/Account/Site/d=mysite.com 

的是,該url服務於view是:

@login_required 
def Site(request): 
    if request.user.is_authenticated(): 
     # verify domain in url is associated with authenticated users account 
     DomainToScan = request.GET.get('d') 
     VerifyDomainAgainstDb = Tld.objects.filter(FKtoClient=request.user,domainNm=DomainToScan) 
    else: 
     HttpResponseRedirect("/Login/") 

    return render(request, 'VA/account/begin_site.html', { 
     'Site':Site, 
     'VerifyDomainAgainstDb':VerifyDomainAgainstDb              
    }) 

具體地,這條線:

DomainToScan = request.GET.get('d') 

觀看Django模板begin_site.html

我在做什麼錯在這裏當DomainToScan值輸出爲None

謝謝!

UPDATE:

urls.py 

(r'^Account/Site/[?]d=[A-za-z0-9]{2,50}.[a-z]{1,3}$', Site), 

出於某種原因,這是不匹配的像一個網址:

http://127.0.0.1:8000/Account/Site/?d=mysite.com 

有什麼理由? Rubular表示其有效

+1

你需要'd = mysite.com'前的'?'? – xbb

回答

1

您沒有任何GET參數。如果您希望domain成爲GET參數,則鏈接應爲http://127.0.0.1:8000/Account/Site/?d=mysite.com - 請注意?

(另請注意,您將需要實際回報HttpResponseRedirect(),不只是把它:但is_authenticated整個檢查是沒有意義的,因爲反正功能裝飾有login_required,所以未驗證用戶甚至不會得到成圖)

+0

當你評論我的帖子時,我真的很感激 - 每次我都會學習東西。我遇到了與我的urls.py不匹配的問題。任何理由? (請參閱上面的內容) – CodeTalk

+1

@CodeTalk查詢字符串參數被視爲輔助於/除了主URL路徑之外,因此您需要更新URLConf中的正則表達式以不再期望'd'參數。即它現在應該變成:'(r'^ Account/Site/$',Site)'。注意:這意味着當你不能使用'{%url%}'標籤或'reverse()'生成一個帶有'd'參數的URL時 - 你需要添加那個位在生成主URL後使用'?' –

+0

@stevejalim - 你的意思是說,在視圖中創建了參數url,它應該包含'd'GET var:「

  • Link
  • ? – CodeTalk

    -1

    嘗試:

    @login_required 
    def Site(request, DomainToScan=None): 
        if request.user.is_authenticated(): 
         # verify domain in url is associated with authenticated users account 
         VerifyDomainAgainstDb = Tld.objects.filter(FKtoClient=request.user,domainNm=DomainToScan) 
        else: 
         return HttpResponseRedirect("/Login/") 
        return render(request, 'VA/account/begin_site.html', locals()) 
    

    urls.py

    (r'^Account/Site/(?P<DomainToScan>[^/]+)/', Site),