Форма, не прошедшая проверку в Django с помощью URLFIELD и IMAGEFIELD

#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)