我试图上传一个图片,但我一直在谷歌搜索,但我找不到一个解决方案。 问题是它不上载图像,并且在字段中数据库被保存为空。 谁能帮我找到解决问题的办法。 我使用django1.10和Linux。在
注:英语不是我的母语,请原谅我的任何错误
请注意,如果我可以从Django admin中上载图像
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'static/imagenes/')
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)
from django import forms
from apps.almacen.articulo.models import Articulo
class ArticuloForm(forms.ModelForm):
class Meta:
model = Articulo
fields = [
'idarticulo',
'nombre',
'codigo',
'descripcion',
'idcategoria',
'stock',
'imagen',
]
labels = {
'idarticulo':'Articulo',
'nombre':'Nombre',
'codigo':'Codigo',
'descripcion':'Descripción',
'idcategoria':'Categoria',
'stock':'Stock',
'imagen':'Imagen',
}
widgets = {
'nombre': forms.TextInput(attrs={'class':'form-control', 'placeholder':'Digite el nombre'}),
'codigo': forms.TextInput(attrs={'class':'form-control', 'placeholder':'Digite el código'}),
'idcategoria': forms.Select(attrs={'class':'form-control'}),
'stock': forms.TextInput(attrs={'class':'form-control', 'placeholder':'Digite el stock'}),
'descripcion': forms.TextInput(attrs={'class':'form-control','placeholder':'Digite la Descripción'}),
'imagen': forms.FileInput(attrs={'class':'form-control'}),
}
class ArticuloCreate(CreateView):
model= Articulo
form_class= ArticuloForm
template_name='almacen/articulo/articulo_form.html'
success_url= reverse_lazy('almacen_art:articulo_listar')
def post(self, request, *args, **kwargs):
self.object = self.get_object
form = self.form_class(request.POST)
if form.is_valid():
articulos = form.save(commit=False)
articulos.save()
return HttpResponseRedirect(self.get_success_url())
else:
return self.render_to_response(self.get_context_data(form=form))
<form method="post" enctype='multipart/form-data'>
{% csrf_token %}
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
<div class="form-group">
<label for="image">Imagen</label>
{{form.imagen}}
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
<div class="form-group">
<button class="btn btn-primary" type="submit">Guardar</button>
<button class="btn btn-danger" type="reset">Cancelar</button>
</div>
</div>
</div>
</form>
{% endblock %}
你能帮我解决这个问题吗?在
您重写了
post
方法上的表单,但没有将文件绑定到新表单,文档明确指出您需要这样做:Binding uploaded files to a form:
所以你的台词
应该变成
^{pr2}$另外,我认为您的整个
post
方法是不必要的,您只是复制了CreateView
的默认行为。另一件事是,将媒体文件放在static files目录中会使您的
collectstatic
命令在每次更改静态文件时运行所有上载的文件,您将有更长的等待时间来执行该命令和重复上载。在希望这有帮助。在
相关问题 更多 >
编程相关推荐