#python #html #django #validation
#python #HTML #django #проверка
Вопрос:
Я пытался настроить простую форму, чтобы пользователи могли зарегистрировать объявление для показа на главной странице веб-сайта. По какой-то причине, что бы я ни пытался сделать, моя форма не проверяется. Что я делаю не так? Я пробовал такие вещи, как добавление enctype и просмотр многочисленных вопросов stackoverflow, связанных с этим. Я был бы признателен, если бы вы могли помочь! Ниже приведен мой код:
Models.py:
from django.db import models
class ad(models.Model):
ad_link = models.URLField(max_length=2000)
image = models.ImageField(upload_to="ads/")
def __str__(self):
return self.ad_link
forms.py:
from django import forms
from .models import ad
class AdForm(forms.ModelForm):
class Meta:
model = ad
fields = ('ad_link', 'image')
Views.py:
def ad_registration(request):
context= {}
if request.method == "POST":
form = AdForm(request.POST or None)
if form.is_valid():
form.save()
else:
form.save()
return render(request, "ad_registration.html", {})
else:
return render(request, "ad_registration.html", {})
HTML-файл с формой:
<form enctype="multipart/form-data" class="form-signin" method="post" action="/ad_registration">
{% csrf_token %}
<div class="d-flex flex-column pb-3">
<img class="img-fluid mx-auto d-block" src= "/static/logo.png" alt="Logo of our school" width=23% height=23%>
</div>
<h1 class="h3 mb-3 font-weight-normal">Register your ad</h1>
<input type="url" name="ad_link" id="inputurl" class="form-control" placeholder="URL of your ad" required>
<label for="inputimage">File of Ad:</label>
<input type="file" class="form-control-file" id="inputimage" name="image" accept="image/*" required>
<button class="btn btn-lg btn-primary btn-block" type="submit">Register</button>
</form>
Комментарии:
1. Если вам нужны какие-либо другие фрагменты кода, пожалуйста, скажите мне.
2. вы не передаете запрос. ФАЙЛЫ для изображений: попробуйте это: AdForm (запрос. ПУБЛИКАЦИЯ, запрос. ФАЙЛЫ)
3. Спасибо @Rafi! Я знал, что это должно быть какое-то короткое исправление!
4. добро пожаловать. я собираюсь поместить это в качестве ответа, чтобы вы могли принять и закрыть.
Ответ №1:
вы не передаете запрос.ФАЙЛЫ для изображений попробуйте это :
AdForm(request.POST, request.FILES)