私のDjango ファイルのアップロードボタンのスタイルを変更しようとしていますが、フォームを通して処理され、テンプレート内のHTMLに明示的に記述されていないため、他のボタンのようにHTMLやCSSで直接スタイルできません。Djangoのファイルピッカーフォームボタンをどのようにスタイルできますか?
CSSクラスをforms.py
に追加しようとしましたが、バニラのデフォルトのDjangoファイルのアップロードボタンをCSSスタイルのボタンの上に配置しています。次のように
私のコードは次のとおりです。
class FileUploadForm(forms.Form):
docFile = forms.FileField(
label = "Select a CSV file",
)
class Meta:
model = FileUpload
fields = ('docFile')
def __init__(self, *args, **kwargs):
super(FileUploadForm, self).__init__(*args, **kwargs)
self.fields['docFile'].widget.attrs.update({'class': 'my_class'})
また、私はそうのように私のMeta
クラス内widget
を定義しようとした:
class Meta:
model = FileUpload
widgets = {
'docFile': forms.FileInput(attrs={'class': 'my_class'}),
}
が、それは私の最初の試みと同様の効果がありました。
これを達成する別の方法がありますか、またはコード内で見つけることができるいくつかの論理エラーがありますか?
ただ、具体的には...あなたは、このクラスは、レンダリングされたHTML(Djangoの問題)に追加表示されない問題がありますか?または、デフォルトでCSSの設定を上書きできませんか(CSSの問題)? – dylrei
カスタムCSSが表示されますが、ファイルピッカーを起動するデフォルトの[ファイルアップロード]ボタンがCSSスタイルの上に配置されるという問題があります。だから、それはCSSやDjango側の両方で問題になる可能性があります。 –
だから...あなたは、レンダリングされたフォームのHTMLソースを見て、あなたのボタンはmy_classのクラスを持っていますか?その後、CSSの問題です。考えられる解決方法には、後でCSSを読み込む方法や!重要なオプションを追加する方法、またはテンプレートの下部にある簡単なJS呼び出しを使用してボタンに異なるスタイルを適用する方法などがあります。 – dylrei