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
Si es un dictkey error es que te falta un atributo en tu formulario
Sent from my SM-G960F using Tapatalk
Te falta el.atributo foto wey en el formulario
Sent from my SM-G960F using Tapatalk
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
Como es tu from en la vista que estas pasadole al input de la foto
Sent from my SM-G960F using Tapatalk
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
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
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
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
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?
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 tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
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
No, es name no id jaja
Sent from my SM-G960F using Tapatalk
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
No, es name no id jaja
Sent from my SM-G960F using Tapatalk
eso explica todo.
Muchas gracias!
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
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