【发布时间】:2015-03-11 20:02:39
【问题描述】:
我正在尝试为我的 Django 文件上传按钮设置样式,但由于它是通过表单处理的,而不是在模板中的 HTML 中明确编写,我无法像我一样直接使用 HTML 和 CSS 设置它的样式对于其他类型的输入按钮。
我试图在我的forms.py 中添加我的 CSS 类,但它会将原版默认的 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 问题)?
-
我可以看到我的自定义 CSS,但问题是触发文件选择器的默认
File Upload按钮随后被放置在我的 CSS 样式之上。所以看起来这可能是 CSS 或 Django 方面的问题。 -
所以...您查看呈现表单的 HTML 源代码,您的按钮有一个 my_class 类?然后这是一个CSS问题。可能的解决方案包括稍后加载您的 CSS 和/或添加 !important 选项或在模板底部执行快速 JS 调用以在按钮上强制使用不同的样式。
-
@dylrei 是的,它看起来像一个 CSS 问题。我尝试了您的解决方案,但不幸的是没有成功。
-
看到这个讨论可能会有所帮助:stackoverflow.com/questions/14401550/…