Underc0de - La Casa de los Informáticos

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: Jonydakid en Diciembre 27, 2018, 06:31:56 PM

Título: [SOLUCIONADO] Ayuda con Django Python
Publicado por: Jonydakid en Diciembre 27, 2018, 06:31:56 PM
Hola buenas a todos, esta es la primera consulta que hago en el foro, solo me he dedicado a leer los aportes xD pero bueno acá va.
Pasa que estoy intentando desarrollar una web ocupando Django Framework, en la cual en un formulario necesito subir una foto y me tira un error MultiValueDictKeyError.
Según yo es porqué la foto seleccionada no está pasando al servidor y lo digo por esto:
(https://i.imgur.com/7MZcCtB.png)

Tengo por códigos:
forms.py

class FormProducto(forms.Form):
    CATEGORIAS = (
        ("PP", "Panes de Pascua"),
        ("EMP", "Empanadas"),
        ("PA", "Panes Amasados")
    )
    nombre = forms.CharField(label="Nombre", max_length=100, widget=forms.TextInput(
        attrs={"id": "nombre", "class": "campo"}))
    categoria = forms.ChoiceField(label="Categoria", widget=forms.Select(
        attrs={"id": "categoria", "class": "campo", "placeholder": "Categoria"}), choices=CATEGORIAS)
    precio = forms.IntegerField(label="Precio", min_value=0, widget=forms.NumberInput(
        attrs={"id": "precio", "class": "campo", "placeholder": "5000"}))
    stock = forms.IntegerField(label="Stock", min_value=0, widget=forms.NumberInput(
        attrs={"id": "stock", "class": "campo", "placeholder": "1"}))
    foto = forms.ImageField(
        label="Foto",required=False, widget=forms.ClearableFileInput(attrs={"id": "foto"}))
    descripcion = forms.CharField(label="Descripcion", max_length=255, widget=forms.TextInput(
        attrs={"id": "descripcion", "class": "campo"}))


view.py

def addProducto(request):

if request.method == "POST":
form = FormProducto(request.POST,request.FILES)
if form.is_valid():
data = form.cleaned_data
Producto.objects.create(
nombre=data.get("nombre"),
categoria=data.get("categoria"),
precio=data.get("precio"),
stock=data.get("stock"),
descripcion=data.get("descripcion"),
foto=request.FILES["foto"])

return redirect('addProducto')
else:
form = FormProducto()
return render(request, "addProducto.html", { "titulo": "Añadir producto","form": form })


Espero puedan ayudarme ya que llevo unos días con este problema y más me cuesta aún siendo newbie xD
Muchas gracias de antemano!

PD:El archivo settings.py ya está configurado
Título: Re:Ayuda con Django Python
Publicado por: dannybombastic en Diciembre 27, 2018, 06:35:04 PM
Si es un dictkey error es que te falta un atributo en tu formulario

Sent from my SM-G960F using Tapatalk

Título: Re:Ayuda con Django Python
Publicado por: dannybombastic en Diciembre 27, 2018, 06:37:46 PM
Te falta el.atributo foto wey en el formulario

Sent from my SM-G960F using Tapatalk

Título: Re:Ayuda con Django Python
Publicado por: dannybombastic en Diciembre 27, 2018, 06:39:37 PM
Si lo tienes disculpa en tapatalk no lo veia pero ya vi en la web haha hay lo recheko

Sent from my SM-G960F using Tapatalk

Título: Re:Ayuda con Django Python
Publicado por: dannybombastic en Diciembre 27, 2018, 06:41:34 PM
Como es tu from en la vista que estas pasadole al input de la foto

Sent from my SM-G960F using Tapatalk

Título: Re:Ayuda con Django Python
Publicado por: dannybombastic en Diciembre 27, 2018, 06:46:10 PM
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Como es tu from en la vista que estas pasadole al input de la foto

Sent from my SM-G960F using Tapatalk
Con vista me refiero a que mandas desde el template no al view.py

Sent from my SM-G960F using Tapatalk

Título: Re:Ayuda con Django Python
Publicado por: dannybombastic en Diciembre 27, 2018, 07:10:30 PM
Estas intentando acceder a un atributo que no esta, en tu view.py ese es el error que te esta tirando

Sent from my SM-G960F using Tapatalk
Título: Re:Ayuda con Django Python
Publicado por: Jonydakid en Diciembre 27, 2018, 07:47:40 PM
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Estas intentando acceder a un atributo que no esta, en tu view.py ese es el error que te esta tirando

Sent from my SM-G960F using Tapatalk


{% extends "maqueta.html" %}


{% block Content %}
<h1>Página para añadir producto</h1>

<form id="addProducto" method="POST" enctype="multipart/form-data">
{%csrf_token%}
<table class="tableform">
{% for campo in form %}
<tr>
<th width="20%">{{ campo.label_tag }}</th>
<td width="60%">{{ campo }}</td>
<td width="20%"><p id="error_{{ campo.id_for_label }}" class="error">{{ campo.errors }}</p></td>
</tr>
{% endfor %}
</table>
<input type="submit" class="campo boton" value="Añadir" align="center" />
</form>
{% endblock %}


El atributo no es la que está en el forms.py?
Título: Re:Ayuda con Django Python
Publicado por: dannybombastic en Diciembre 27, 2018, 10:18:53 PM
Si pero el error es al recuperar el dict que viene dentro del POST que es un diccionario y estas intentando acceder a un atributo de tu form que no existe o por lo menos eso es lo que parece

Sent from my SM-G960F using Tapatalk

Título: Re:Ayuda con Django Python
Publicado por: Jonydakid en Diciembre 27, 2018, 11:35:19 PM
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Si pero el error es al recuperar el dict que viene dentro del POST que es un diccionario y estas intentando acceder a un atributo de tu form que no existe o por lo menos eso es lo que parece

Sent from my SM-G960F using Tapatalk

No entiendo. No se supone que ese pasa con el attrs={"id": "foto"} del forms.py? :o
Título: Re:Ayuda con Django Python
Publicado por: dannybombastic en Diciembre 28, 2018, 12:30:50 AM
No, es name no id jaja

Sent from my SM-G960F using Tapatalk
Título: Re:Ayuda con Django Python
Publicado por: Jonydakid en Diciembre 28, 2018, 01:00:28 AM
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
No, es name no id jaja

Sent from my SM-G960F using Tapatalk
eso explica todo.
Muchas gracias!
Título: Re:Ayuda con Django Python
Publicado por: dannybombastic en Diciembre 28, 2018, 01:11:46 AM
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
No, es name no id jaja

Sent from my SM-G960F using Tapatalk
eso explica todo.
Muchas gracias!
Jajaj eso nos pasa a cualquiera pues a  seguir buena suerte y ya sabes todos juntos somos mas fuertes un saludote desde malaga

Sent from my SM-G960F using Tapatalk