Формы Django не передают условие form.is_valid()

В моем views.py есть представление, в котором пользователь может создать пост с заголовком, медиафайлом и подписью. Когда я проверяю if form.is_valid():, он всегда возвращает false, и я не вижу проблемы с моей формой.

views.py

def your_profile(request):
    if request.method == "POST":
        form = CreatePost(request.POST)
        if form.is_valid(): 
            title = form.cleaned_data.get("title_input")
            media = form.cleaned_data.get("media_input")
            caption = form.cleaned_data.get("caption_input")

    context = {"title": "Your Profile"}
    return render(request, "myApp/your_profile.html", context)

forms.py

class CreatePost(forms.Form):
    title = forms.CharField(max_length=30)
    media = forms.FileField(max_length=350)
    caption =forms.CharField(max_length=300) 

html

<form action="" method="post">
    <input type="text" name="title_input" id="title_input">
    <label for="title_input">Title</label>

    <input type="file" name="media_input" id="media_input">
    <label for="media_input">Media</label>

    <input type="text" name="caption_input" id="caption_input">
    <label for="caption_input">Caption</label>

    <input type="submit" value="POST!">
</form>

Просто добавьте блок else, как здесь:

if form.is_valid():
    ...
else:
    print(form.errors)

Выведет тег <li></li> с именем поля и ошибкой.
Вы также забыли добавить:

{% csrf_token %}

Внутри вашего тега <form></form> в .html
. Также атрибуты name тегов <input> должны быть похожи на названия полей в модели. Это всегда работает для меня.

Вернуться на верх