django - 我无法用 django 上传图片
问题描述
我正在用 django 创建一个图像上传功能。但是,它没有上传。我不知道代码错误,所以我想告诉你。我尝试了各种方法,但如果我为 imagefiled 指定默认值,则将应用默认值。
#form
class RecordCreateForm(BaseModelForm):
class Meta:
model = URC
fields = ('image','UPRC','URN',)
def __init__(self, *args, **kwargs):
user = kwargs.pop('user')
super(RecordCreateForm,self).__init__(*args, **kwargs)
self.fields['URN'].queryset = UPRM.objects.filter(user=user)
#view
class RecordCreate(CreateView):
model = URC
form_class = RecordCreateForm
template_name = 'records/urcform.html'
success_url = reverse_lazy('person:home')
def get_form_kwargs(self):
kwargs = super(RecordCreate, self).get_form_kwargs()
# get users, note: you can access request using: self.request
kwargs['user'] = self.request.user
return kwargs
def form_valid(self, form):
user = self.request.user
form.instance.user = user
form.instance.group = belong.objects.get(user=user).group
return super().form_valid(form)
#model
def get_upload_path(instance, filename):
n = datetime.now()
prefix = "records/"
ymd='/'.join([n.strftime('%Y'), n.strftime('%m'), n.strftime('%d'), ""]) + "/"
directory=str(instance.user.id) + "/"
name=str(uuid.uuid4()).replace("-", "")
extension=os.path.splitext(filename)[-1]
return ''.join([prefix, directory, ymd, name, extension])
class URC(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
group = models.ForeignKey(group, on_delete=models.CASCADE, null=True)
URN = models.ForeignKey(UPRM, on_delete=models.CASCADE)
UPRC = models.CharField(max_length=300)
image = models.ImageField(upload_to=get_upload_path)
def __str__(self):
return self.UPRC
#urls
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
我将发布任何其他必要的代码。对不起英语不好。
后记
页面被重定向,没有任何错误显示。但管理屏幕能够上传。
class BaseModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
kwargs.setdefault('label_suffix', '')
super(BaseModelForm, self).__init__(*args, **kwargs)
#template
<form method="post" action="">
{% csrf_token %}
{{form.image.label_tag}}
{{form.image}}
{{form.UPRC.label_tag}}
{{form.UPRC}}
{{form.URN.label_tag}}
{{form.URN}}
<input class="btn btn-primary" type="submit" value="submit">
</form>
解决方案
您的<form>
标签错过了enctype
,如此处所述:
<form method="post" enctype="multipart/form-data">
推荐阅读
- arrays - 我的选项列表的 urlencode 数组
- javascript - 每次更改文件时,NodeJS都会获取文件的最后一行
- java - PostConstruct没有在junits中被调用
- python - 从特定日历 Google API Python 获取事件
- python - 不安全的登录 Facebook API
- xamarin - Xamarin 表单导航堆栈为空
- android - Kotlin 自定义对话框
- android - Android Wear 应用在商店中不可见(内部测试轨道)
- java - 在Java中将int转换为double期间精度会略有变化吗?
- jhipster - 如何更改或摆脱 JHipster React 项目中的“my-suffix”?