2017-01-17 4 views
0

Ich habe eine form wo Benutzer nur ein Bild hochlädt, aber Problem ist, wenn ich ein Bild wähle und die Taste zum Abschicken drücken. Es steht This field is required. auf der Seite obwohl ich schon auf das Bild hingewiesen habe. Und das ist alles, was es tut. Ich überprüfte, ob es tatsächlich eingereicht wurde, aber nein, war es nicht. Was könnte das Problem sein?Django: Formulardaten nicht speichern

Models.py

class pic(models.Model): 
    username = "anonymous" 
    picpost = models.ImageField(upload_to='anon_pics') 
    creation_date = models.DateTimeField(auto_now_add=True) 

forms.py

from django import forms 
from .models import pic 

class PicForm(forms.ModelForm): 
    class Meta: 
     model = pic 
     fields = [ 
      "picpost" 
     ] 

view.py

def pic_create(request): 
    form = PicForm(request.POST or None) 
    if form.is_valid(): 
     instance = form.save(commit=False) 
     instance.save() 
    context = { 
     "form" : form, 
    } 
    return render(request, "create_pic.html", context) 

cr eate_pic.html

<body> 
    <form method='POST' action=''>{% csrf_token %} 
     {{ form.as_p }} 
     <input type='submit' value='Upload Picture' /> 
    </form> 
</body> 

Jede Hilfe ist appreciated.Thank Sie sehr sehr viel!

Antwort

1

Es gibt zwei Probleme hier.

Zunächst muss Ihre Ansicht request.FILES sowie request.POST an das Formular übergeben.

Zweitens muss Ihr Formularelement in der Vorlage enctype="multipart/form-data" enthalten.

+0

Es hat funktioniert! Ich danke dir sehr! 'form = PicForm (request.POST, request.FILES oder None)' richtig? –

Verwandte Themen