Django - Как проверить выбор объекта и отобразить соответствующий элемент в HTML - PullRequest
0 голосов
/ 21 июня 2019

Я работаю над приложением для фотографий, которое позволяет загружать изображения.Оттуда есть варианты выбора для каждой фотографии - "ОБЩЕСТВЕННАЯ" или "ЧАСТНАЯ" -.Для изображений, которые являются «ОБЩЕСТВЕННЫМИ», изображение будет отображаться на домашней странице без необходимости авторизации пользователя.Тем не менее, я испытываю трудности при фильтрации изображений на основе выбора и отображения соответствующего объекта на главной странице.

Я новичок в кодировании и Django, буду признателен за некоторые советы здесь.Заранее спасибо!

Это мой файл models.py:

class Images(models.Model):
    title = models.CharField(max_length=100)
    image = models.ImageField(upload_to='images/')

    PRIVATE ='PR'
    PUBLIC = 'PU'

    PUBLISH_CHOICES = [
            (PRIVATE, 'Private'),
            (PUBLIC, 'Public'),]
    publish = models.CharField(max_length=7,
                        choices=PUBLISH_CHOICES,
                        default=PRIVATE)


    def __str__(self):
        return self.title


Это мой файл views.py

class HomePageView(ListView):
    model = Images
    template_name = 'index.html'

    def my_view(request):
        myimages = Images.objects.all()
        for entry in myimages:
            publish_status = entry.get_publish_display()
        return publish_status

Это мой файл index.html:

{% for images in images_list %}
  {% if publish_status == Public %}
    <div class="container">
      <h3>{{images.title}}</h3>
      <img src="{{images.image.url}}" alt=" {{images.title}}">
    </div>  
  {% endif %}
{% endfor %}

Ответы [ 3 ]

0 голосов
/ 21 июня 2019
{% for image in object_list %}
  {% if image.publish_status == 'Public' %}
    <div class="container">
      <h3>{{images.title}}</h3>
      <img src="{{images.image.url}}" alt=" {{images.title}}">
    </div>  
  {% endif %}
{% endfor %}

Попробуй это. Отредактируйте файл index.html

0 голосов
/ 21 июня 2019

Универсальный ListView возвращает список всех Images, вы можете передать их в шаблон - как вы это сделали по праву - и тогда фильтр по полю publish может быть PU для Public или PR для Private.

views.py становится:

class HomePageView(ListView):
    model = Images
    template_name = 'index.html'

index.html становится:

{% for images in images_list %}
  {% if images.publish == 'PU' %}
    <div class="container">
      <h3>{{images.title}}</h3>
        <h2>{{ images.image.url }}</h2>
      <img src="{{ images.image.url }}" alt="{{images.title}}">
    </div>
  {% endif %}
{% endfor %}

Приветствия.

0 голосов
/ 21 июня 2019

Вы можете получить все изображения, передать их в шаблон, а затем отфильтровать на основе publish_status.Ниже показано, как это может выглядеть.

views.py:

class HomePageView(ListView):
    model = Images
    template_name = 'index.html'

index.html:

{% for image in object_list %}
  {% if image.publish_status == 'Public' %}
    <div class="container">
      <h3>{{images.title}}</h3>
      <img src="{{images.image.url}}" alt=" {{images.title}}">
    </div>  
  {% endif %}
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...