Olá, tudo bem gostaria de saber quais os passos para configurar em views, ou em models, para que minha página web aceite imagem utilizando Python/Django, e estou usando como front-end Bootstrap, está apresentando erro:
Eu tenho essa tela:
Você deve postar o código da View.py , Model.py e o Form.py se tiver utilizando. Até mais!
//No arrquivo settings:
MEDIA_ROOT = os.path.join(BASE_DIR, ‘media’)
MEDIA_URL = ‘/media/templates/images/’
//Em Models:
image1 = models.ImageField(upload_to=‘templates/images/’, verbose_name=‘Imagem 1’, null=True, blank=True )
image2 = models.ImageField(upload_to=‘templates/images/’, verbose_name=‘Imagem 2’, null=True, blank=True )
image3 = models.ImageField(upload_to=‘templates/images/’, verbose_name=‘Imagem 3’, null=True, blank=True )
image4 = models.ImageField(upload_to=‘templates/images/’, verbose_name=‘Imagem 4’, null=True, blank=True )
image5 = models.ImageField(upload_to=‘templates/images/’, verbose_name=‘Imagem 5’, null=True, blank=True )//
//No arquivo de formulário,
Opa! A formatação do código não ficou legal e também faltou mostrar como tá o código da view. Mas aqui:
//settings.py
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
#adicione o context_processors
'django.template.context_processors.media',
],
},
},
]
Para acessar a imagem no Templete:
<img src="{{ MEDIA_URL }}/pasta/image.jpg">
Agora para fazer o upload de uma imagem para o servidor faltou mostrar como tá o arquivo view.py e se você está usando os formulários do Django. Mas nesse link tem um bom exemplo:
Uma observação, ao inserir a imagem ele funciona, quando acessa no admin aparece esse erro. Vou fazer essas alterações e ver o que ocorre, ficou espalhado o código.
Desculpe, esqueci de enviar:
<a href="//views.py" class="onebox" target="_blank" rel="noopener nofollow ugc">//views.py</a>
@login_required(login_url=’/login/’)
def submit_cadastro_imovel(request):
if request.POST:
nome = request.POST.get(‘nome’)
endereco = request.POST.get(‘endereco’)
cep = request.POST.get(‘cep’)
metros = request.POST.get(‘metros’)
dormitorios = request.POST.get(‘dormitorios’)
banheiros = request.POST.get(‘banheiros’)
garagem = request.POST.get(‘garagem’)
vagas_garagem = request.POST.get(‘vagas_garagem’)
varanda = request.POST.get(‘varanda’)
image1 = request.POST.get(‘image1’)
image2 = request.POST.get(‘image2’)
image3 = request.POST.get(‘image3’)
image4 = request.POST.get(‘image4’)
image5 = request.POST.get(‘image5’)
tipo_contrato = request.POST.get(‘tipo_contrato’)
estado = request.POST.get(‘estado’)
cidade = request.POST.get(‘cidade’)
valor = request.POST.get(‘valor’)
condicao = request.POST.get(‘condicao’)
usuario = request.user
Imovel.objects.create(nome=nome,
endereco=endereco,
cep=cep,
metros=metros ,
dormitorios = dormitorios,
banheiros =banheiros,
garagem = garagem,
vagas_garagem=vagas_garagem,
varanda=varanda,
image1=image1,
image2=image2,
image3=image3,
image4=image4,
image5=image5,
tipo_contrato=tipo_contrato,
estado=estado,
cidade=cidade,
valor=valor,
condicao=condicao,
usuario=usuario
)
return redirect(’/’)
return redirect(’/’)
Faltou informar o código html, eu usei o bootstrap também <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/s.pnglight_smile.png?v=10" title=":slight_smile:" class="emoji" alt=":slight_smile:">
//{% extends “model-page.html” %}
{% block content %}
<div class="lightbox-wrapper"><a class="lightbox" href="/uploads/3X/4/f/4f258604b1142719186fd46a6405a6a0ef6a1330.png.webp" data-download-href="/uploads/default/4f258604b1142719186fd46a6405a6a0ef6a1330" title="image"><img src="/uploads/3X/4/f/4f258604b1142719186fd46a6405a6a0ef6a1330.png.webp" alt="image" data-base62-sha1="bia73SDHy3Jhjxhv87rKBMkqjpC" width="690" height="142" srcset="/uploads/3X/4/f/4f258604b1142719186fd46a6405a6a0ef6a1330.png.webp, /uploads/3X/4/f/4f258604b1142719186fd46a6405a6a0ef6a1330.png.webp 1.5x, /uploads/3X/4/f/4f258604b1142719186fd46a6405a6a0ef6a1330.png.webp 2x" data-small-upload="/uploads/3X/4/f/4f258604b1142719186fd46a6405a6a0ef6a1330.png.webp"><div class="meta">
<svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg>image906×187 16 KB<svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg>
</div></a></div>