I am attempting to style my Django file upload button, but since it's handled through the form and not explicitly written in the HTML within the template I cannot style it directly with HTML and CSS like I can for other buttons of type input.
I've attempted to add my CSS class within my forms.py, but it is placing the vanilla default Django file upload button on top of my CSS styled button.
My code is as follows:
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'})
I also tried defining a widget within my Meta class like so:
class Meta:
model = FileUpload
widgets = {
'docFile': forms.FileInput(attrs={'class': 'my_class'}),
}
but that had the same effect as my first attempt.
Is there a different way of accomplishing this or are there some logical errors that you can spot within my code?
For posterity's sake here is the solution which I found using Bootstrap here.
.fileUpload {
position: relative;
overflow: hidden;
margin: 10px;
}
.fileUpload input.upload {
position: absolute;
top: 0;
right: 0;
margin: 0;
padding: 0;
font-size: 20px;
cursor: pointer;
opacity: 0;
filter: alpha(opacity=0);
}
<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet"/>
<div class="fileUpload btn btn-primary">
<span>Upload</span>
<input type="file" class="upload" />
</div>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With