class="create_trailer">
<form class="create_trailer_form" method="post">
{% csrf_token %}
{{ form.name_trailer }}
{{ form.preview_trailer }}
{{ form.trailer }}
{{ form.author }}
<input id="user_submit" type="submit" value="Создать статью">
</form>
</div>
Вот код views.py:
def create_trailer(request):
form = TrailerForm(request.POST)
if form.is_valid():
name_trailer = form.cleaned_data['name_trailer']
preview_trailer = form.cleaned_data['preview_trailer']
trailer = form.cleaned_data['trailer']
author = form.cleaned_data['author']
form.save()
print(name_trailer, preview_trailer, trailer)
add_trailer = Trailer(name_trailer=name_trailer, preview_trailer=preview_trailer, trailer=trailer, author=author)
add_trailer.save()
else:
form = TrailerForm()
return render(request, 'polls/create_trailer.html', {'form': form})
Вот код models.py:
class Trailer(models.Model):
name_trailer = models.CharField("Название трейлера", max_length=200)
pub_date = models.DateTimeField('Дата публикации трейлера', default=timezone.now)
preview_trailer = models.ImageField("Превью трейлера", upload_to='photo', default=None)
trailer = models.FileField("Трейлер", upload_to='video')
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, default="anonim")
Вот код forms.py:
class TrailerForm(ModelForm):
class Meta:
model = Trailer
fields = ['name_trailer', 'preview_trailer', 'trailer', 'author']
во первых код в gist во вторых почему у тебя две логики создания записи ?
https://pastebin.com/iz2Gtkn2 https://pastebin.com/LAXjyc78 https://pastebin.com/ZXJLJdqC https://pastebin.com/f3cFGpqB
и что форма валидна ?
зачем ты выкладываешь код по нескольким ссылкам? ты правда думаешь так кому-то удобно смотреть?
А что с ней не так?
используй gist там можно в рамках одной ссылки разместить несколько файлов
name_trailer = form.cleaned_data['name_trailer'] preview_trailer = form.cleaned_data['preview_trailer'] trailer = form.cleaned_data['trailer'] author = form.cleaned_data['author'] вот это вообще зачем?
Зачем во второй ссылке в коде строки 5, 6, 7, 8?
Они не нужны?
Удали
Не пиши если не понимаешь зачем это нужно писать и нужно ли
{{ form.as_p }} вот так не пробовал делать? в целом у тебя очень много лишнего кода, а лишний код это всегда возможность для лишней ошибки
Писать то , чего не понимаешь такое себе увлечение
Тоже самое, запись не создаётся
Когда пишешь код, должен же понимать зачем. Я думаю он копирует его себе
это не про решение твоей проблемы это про то как нужно писать
ты уверен что форма валидна ?
Выведи в шаблон ошибки в случае не валидности формы
preview_trailer Обязательное поле. trailer Обязательное поле.
На 100% нет,но не могу найти ошибку
по этому я могу сказать на 100% что не валидна
убери else: form = TrailerForm() и в шаблоне form.as_p и попробуй заполнить форму еще раз
Всё равно тоже самое
что именно все равно?
Не добавляется запись
у тебя, если ты это сделал, на странице должны появиться сообщения об ошибке, или ты не сделал или не внимательно смотришь
Пришли пасту снова. На этот раз одним файлом
Пишет "Форма валидна": Вот код: if request.method == 'POST': form = TrailerForm(request.POST) if form.is_valid(): return HttpResponse("Форма не валидна!") else: return HttpResponse("Форма валидна!") else: return HttpResponse("Форма не post") return render(request, 'polls/create_trailer.html', {'form': form})
else: return HttpResponse("Форма валидна!")
😂😂😂
а написать точно как попросили не пробовал?
https://pastebin.com/Y5fvxhNx
ну то есть ты не сделал ровно ничего из того что тебе сказали?) https://dpaste.org/obYL
Мне просто интересно, а что у тебя значит form, во время GET запроса?
Так я указал method="post"
Зачем строка 23?
Чтобы в create_trailer.html можно было добавить эту форму
Зачем тогда строка 22
Проверка,что форма с методом post
В строке 22 ты обрабатываешь не POST запрос. Что тогда в 23 строке. Ладно, неважно
Рендерю create_trailer.html.Чтобы в create_trailer.html можно было добавить эту форму
Сколько тебе лет?
16
Давай я тебе лучше книжку кину по джанго ? Русская . Начнёшь с азов
Ему нельзя, скоро тест
Времени нету
Обсуждают сегодня