/ / Como posso adicionar um atributo de classe ao formulário de login do django auth? - django, python-3.x, autenticação

Como posso adicionar um atributo de classe ao formulário de login do django? - django, python-3.x, autenticação

Acabei de instalar o aplicativo de autenticação padrão do Django. Está funcionando e tudo, mas estou pensando em como poderia alterar o css do formulário.

Diga que eu tenho isso:

<form ...>
<input type = "text" class = "input-class" placeholder = "user">
<input type="submit" value="login" />
</form>

que mostraria uma forma bonita após a classe na entrada de texto.

E então, eu tenho o feio simples login.html modelo para autenticação do Django:

<form method="post" action="{% url "login" %}">
{% csrf_token %}

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

O que eu quero fazer é obter o segundo formulário com as classes css do primeiro.

Existe uma maneira de fazer isso sem mexer com modelos e formulários? E, se não, alguém pode me mostrar o caminho?

Muito obrigado

Respostas:

1 para resposta № 1

Eu gostaria que houvesse uma maneira direta de fazer isso, sem mexer em formulários ou instalar um aplicativo de terceiros. Mas, infelizmente, não é esse o caso.

Se você não deseja instalar nenhum aplicativo, pode estender o AuthenticationForm:

class PrettyAuthenticationForm(AuthenticationForm):
class Meta:
widgets = {
"username": forms.TextInput(attrs={"class": "input-class"})
}

Então, se você estiver usando o LoginViewpasse seu novo PrettyAuthenticationForm usando o authentication_form parâmetro (veja o link para mais detalhes).

Mas não sei se vale todo o trabalho. Já fiz isso algumas vezes, mas geralmente prefiro instalar django-widget-tweaks ou django-crispy-forms.

Se você precisar apenas adicionar alguma classe css aqui e ali, e estiver usando um conjunto de css personalizado, sugiro usar o django-widget-tweaks.

Se você tiver vários formulários e estiver usando alguma estrutura CSS como o Bootstrap ou o Foundation, eu recomendaria o uso django-crispy-forms.

Um exemplo com django-widget-tweaks, primeiro instale-o:

pip install django-widget-tweaks

Adicione-o ao seu settings.py

INSTALLED_APPS = [
# ...

"widget_tweaks",
]

No seu modelo, carregue-o em cima do arquivo:

{% load widget_tweaks %}

Em seguida, use-o em seus campos:

{{ form.username|add_class:"input-class" }}