Получение ошибки TypeError при попытке создать уникальную страницу в Django

Я создаю веб-приложение для галереи фотографий. Я хочу сделать так, чтобы некоторые из отображаемых фотографий принадлежали определенной коллекции. Каждая коллекция должна иметь свою собственную страницу, на которой отображаются все фотографии, принадлежащие ей.

Имя каждой уникальной страницы должно быть photo_collection моделью, которую я добавил к классу Image в models.py. Но по какой-то причине я получаю TypeError at /projects/sample_collection_name/ - photo_collection() got an unexpected keyword argument 'photo_collection'

Не знаю, что вызывает эту ошибку. Я попробовал переименовать функцию photo_collection (она имеет то же имя, что и моя модель), но это не помогло.

models.py

class Image(models.Model):
  title = models.CharField(max_length=300)
  image = models.ImageField(null=True, blank=True, upload_to='images/')
  pub_date = models.DateTimeField('Date published', default=timezone.now)
  photo_collection = models.CharField('Photo collection', max_length=250, null=True, blank=True)

views.py

def photo_collection(request):
  image = Image.objects.all()
  return render (request, 'photo_app/collection.html', context={'image': image})

urls.py

urlpatterns = [
  #some other patterns here
  path('projects/<str:photo_collection>/', views.photo_collection, name='photo_collection'),
]

gallery.html

        {% if i.photo_collection != Null %}
           <a href="{% url 'photo_collection' i.photo_collection %}">{{i.photo_collection}}</a>
        {% endif %}

вам нужно добавить photo_collection в параметры представления.

это будет выглядеть следующим образом:

def photo_collection(request, photo_collection):
  image = Image.objects.all()
  return render (request, 'photo_app/collection.html', context={'image': image})

когда вы добавляете переменную в ваш url путь, вам нужно добавить эту переменную и в параметры просмотра.

вот документация по этому вопросу: https://docs.djangoproject.com/en/4.1/topics/http/urls/

Вернуться на верх