Django adiciona classe ao formulário <input ..> field
Estamos procurando uma solução para adicionar um atributo de classe CSS ao @ango de um formulário do Djan<input..>
campo. Vimos o conselho que sugere agrupar o campo em um<div>
http: //docs.djangoproject.com/en/1.2/topics/forms/#customizing-the-form-templat, mas este conselho parece se aplicar principalmente a um rótulo de campos, não é<input ...>
.
Este conselho específico não funciona se você estiver tentando criar uma borda ao redor do<input>
campo. Nesse caso, o<div>
será aplicado à caixa delimitadora, e não ao campo de entrada real. Por exemplo.wrapper { border: 1px solid #666;line-height:22px;height:22px;padding:3px 5px;width:205px;}
criará uma caixa ao redor do campo, em vez de substituir o @ padr<input ...>
fronteira
Voltamos a aplicar a classe através de um widget aplicado à classe Form, mas isso carece de uma certa quantidade de elegância do código (e viola DRY). Por exemplo, isso resolve a necessidad
class ContactUsForm(forms.Form):
name = forms.CharField(widget=forms.TextInput(attrs={'class':'form_text'}))
Mas é claro, isso vincula o formulário muito ao CSS. E fica ainda mais complexo se você estiver tentando aplicar atributos de classe a<input ..>
se o formulário for baseado no novo sistema legal forms.ModelFor
Passamos a maior parte de dois dias brincando com esse problema (e estudando o código-fonte do Django), e parece que podemos estar alcançando as extremidades mais distantes do Django para esse problema em particular - mas queríamos apenas fazer um. passe no StackOverflow para ver se mais alguém teve uma idei
Obrigado por qualquer insight.
Um comentário final: sinta-se à vontade para esclarecer isso se o problema for o nosso entendimento do CSS (em vez do django). Passamos bastante tempo mexendo nas opções de CSS, mas nenhuma delas parece nos permitir alcançar o efeito desejado - que é substituir o padrão<input...>
fronteira