2009-07-02 55 views
2

在對現有解決方案不滿意之後,我爲Django寫了一個OpenId提供程序。如何在Djangos登錄表單中預設用戶名?

如果現在有人想在某處認證自己的地址爲http://tejp.de/users/abc/並且需要登錄,我想顯示用戶名預設爲「abc」的登錄表單。像redirect_to_login這樣的標準功能似乎沒有提供任何參數,我也不知道如何手動重定向到django.contrib.auth.views.login的登錄視圖時如何預設該值。另外似乎沒有簡單的方法來獲得一個額外的參數值到模板,以便我可以在那裏插入預設值。

有沒有辦法在登錄表單中自動填寫用戶名?如果可能的話,我想使用普通的登錄視圖,而不是複製&粘貼所有的登錄代碼並編輯必要的更改。

回答

-1

一些方法來解決上述問題是:

  1. 寫自己的認證形式,並顯示之前預先填入用戶名。

  2. 使用JavaScript從URL中刪除用戶名並將其放在窗體中。

1

請記住,Django是所有的蟒蛇,源是你的朋友。

這是最初的來源redirect_to_login

def redirect_to_login(next, login_url=None, redirect_field_name=REDIRECT_FIELD_NAME): 
    "Redirects the user to the login page, passing the given 'next' page" 
    if not login_url: 
     login_url = settings.LOGIN_URL 
    return HttpResponseRedirect('%s?%s=%s' % (login_url, urlquote(redirect_field_name), urlquote(next))) 

它看起來像你甚至可以重寫login_url並鏈接到一個帶有相應參數的URL。像

return redirect_to_login(login_url=reverse('my_login_view', [], {'username': username})) 

你不需要一個新的表單,你只需要預先填充現有的登錄表單。

相關問題