(ИСПРАВЛЕНО) Не найдена реверсия для 'user-profile' с аргументами '('',)'. Испробован 1 шаблон(ы): ['profile/(?P<pk>[^/]+)/$'].
Я смотрю курс, и после того, как лектор использовал exclude = ['host', 'participants']
в Meta class
, я получил эту ошибку, которая выделяет эту строку в шаблоне:
<a href="{% url 'user-profile' room.host.id %}">@{{room.host.username}}</a>
view:
def userProfile(request, pk):
user = User.objects.get(id=pk)
rooms = user.room_set.all()
room_messages = user.message_set.all()
topics = Topic.objects.all()
context = {'user': user, 'rooms': rooms,
'room_messages': room_messages,
'topics': topics,
'pk': pk}
return render(request, 'base/profile.html', context)
Урлы:
path('profile/<str:pk>/', views.userProfile, name='user-profile'),
class Room(models.Model):
host = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
topic = models.ForeignKey(Topic, on_delete=models.SET_NULL, null=True)
name = models.CharField(max_length=200)
description = models.TextField(null=True, blank=True)
participants = models.ManyToManyField(User, related_name='participants', blank=True)
Я попытался удалить exclude = ['host']
, но это не помогло.
Затем я попытался добавить 'pk': pk
к context
в userProfile
, но и это не помогло. Буду благодарен за помощь.
ИСПРАВЛЕНИЕ.
Проблема заключалась в том, что у некоторых комнат не было хозяина, так как на этапе создания комнаты в функции createRoom
была возможность не выбирать хозяина.
Также для того, чтобы увидеть это, я использовал условие:
{% if room.host.id %}
<a href="{% url 'user-profile' room.host.id %}">@{{room.host.username}}</a>
{% endfor%}