join() argument must be str, bytes, or os.PathLike object, not 'dict'

Проблема: при открытии любой из категорий у меня ошибка которая в заголовке. У меня есть страница с категориями:

    <ul class="list-group">
                <a style="margin-bottom: 20px" href="{% url 'incateg' 'electronics' %}"><li class="list-group-item">Electronics</li></a>
                <a style="margin-bottom: 20px" href="{% url 'incateg' 'cars' %}"><li class="list-group-item">Cars</li></a>
                <a style="margin-bottom: 20px" href="{% url 'incateg' 'sports' %}"><li class="list-group-item">Sports</li></a>
                <a style="margin-bottom: 20px" href="{% url 'incateg' 'food' %}"><li class="list-group-item">Food</li></a>
                <a style="margin-bottom: 20px" href="{% url 'incateg' 'accessories' %}"><li class="list-group-item">Accessories</li></a>
                <a style="margin-bottom: 20px" href="{% url 'incateg' 'books' %}"><li class="list-group-item">Books</li></a>
    </ul>

Функция:

@login_required(login_url='/login')
def categor(request, cat):
    cat_list = Listing.objects.filter(category=cat)
    empty = False
    if len(cat_list) == 0:
        empty: True
    return render("auctions/incateg.html", {
        "cat": cat,
        "empty": empty,
        "items": cat_list
    })

И цикл в incateg.html который должен показать все итемы в категории которая открыта:

{% for item in items_list reversed %}
          {% if item.categor == cat %}
          {% endif %}
            {% if empty %}
                <p>There is no avaliable listings in this category</p>
            {% endif }
{% endfor %}

скрин ошибки


Ответы (1 шт):

Автор решения: insolor

Первым параметром в render должен передаваться request, вторым - путь к шаблону, третьим - данные (контекст), см. документацию. Вы request не передаете, получается путь к шаблону передается вместо request, а данные для шаблона вместо пути шаблона.

Другие проблемы в коде, которые я вижу:

  • В словаре есть ключ items, но нет items_list, который указан в шаблоне.
  • empty: True никак не модифицирует переменной empty, нужно заменить на присваивание empty = True.
  • У объектов в вашем списке, насколько я понимаю, есть поле category (судя по имени параметра, используемому при фильтрации), а в шаблоне проверяется поле categor.
  • По логике проверять значение empty в шаблоне нужно вне цикла, т.е. сделать, чтобы for был вложен в if, а не наоборот (как сейчас). Сейчас у вас при пустом списке for ни разу не выполнится, и <p>There is no avaliable listings in this category</p> не отобразится.
→ Ссылка