django
  • forms
  • 2011-10-09 75 views 2 likes 
    2

    我是一個Django新手。我正在構建一個使用django認證模塊的django項目。自定義Django用戶身份驗證表格

    因此,我使用LoginForm爲任何要登錄的用戶生成上下文變量{{form.username}}和{{form.password}}。但要使UX更好,我有這樣的事情

    <td><input type="text" name="username" id="" size="30" value="" class='loginput'/></td> 
    

    ,而不是簡單的

    <td>{{ form.username }}</td> 
    

    我如何去使用輸入標籤,但仍然使用Django的認證後端的形式?我也明白,對於任何其他形式,我可能會使用小工具,表單媒體。我無法解決這個問題。

    謝謝。

    回答

    4

    爲什麼提高可用性?唯一的區別是,你已經添加了一個class,出於某種原因刪除id屬性,因此使得它不可能使用label。我看不出有什麼情況可以讓一些不太容易獲得的東西讓UX變得更好。在驗證失敗的情況下,去掉Django表單重新顯示錯誤值的動態能力似乎幾乎沒有向前邁出的一步。

    雖然我不明白你的問題在問什麼。如果你真的想在你的模板中使用這個不太可用的標記,爲什麼不做呢?無論如何你必須提供contrib.auth視圖的模板,所以你有機會。

    當然是一個更好的辦法是簡單地繼承了LoginForm的並添加HTML類有:

    class LoginForm(auth.forms.AuthenticationForm): 
        username = forms.CharField(label=_("Username"), max_length=30, 
               widget=forms.TextInput(attrs={'class': 'loginput'})) 
    

    ,並通過這種形式的額外的上下文到登錄網址:

    (r'^accounts/login/$', 'django.contrib.auth.views.login', 
         {'template_name': 'myapp/login.html', 'authentication_form': LoginForm}), 
    
    相關問題