2011-10-09 5 views
2

저는 Django Newbie입니다. 장고 인증 모듈을 사용하는 장고 프로젝트를 만들고 있습니다.장고 사용자 인증 양식 사용자 정의

그래서 모든 사용자가 로그인 할 수있는 컨텍스트 변수 {{form.username}} 및 {{form.password}}을 생성하는 LoginForm을 사용하고 있습니다. 하지만 대신에 내가 입력 태그를 사용하여 여전히 장고 인증 백엔드 양식을 사용하여 가야합니까 어떻게 간단한

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

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

같은 것을 가지고 더 나은 UX를 만들려면? 또한 다른 형식의 경우 위젯, 양식 - 미디어를 사용할 수 있음을 이해합니다. 나는이 문제를 해결할 수 없다.

감사합니다.

답변

4

왜 유용성이 향상됩니까? 유일한 차이점은 class을 추가했으며 어떤 이유로 인해 id 속성을 제거 했으므로 label을 사용할 수 없게되었습니다. 접근성이 떨어지는 것을 만드는 것이 UX를 더 좋게 만들 수있는 어떤 상황도 볼 수 없습니다. Django 폼의 동적 인 기능을 제거하면 유효성 검사 실패의 경우 잘못된 값을 다시 표시하는 것과 비슷하게 비슷하게 보입니다.

나는 당신의 질문이 무엇을 요구하고 있는지 정말로 이해할 수 없다. 템플릿에서이 덜 쓸만한 마크 업을 정말로 사용하고 싶다면 왜 그렇게하지 않는가? 어떤 경우에도 contrib.auth 뷰에 대한 템플릿을 제공해야하므로 기회가 있습니다.

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

을하고 로그인 URL로 여분의 맥락에서이 양식을 전달합니다 :

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

은 물론 훨씬 더 좋은 방법은 단순히 LoginForm을 서브 클래스 화해, 거기 HTML 클래스를 추가하는 것입니다