Просмотреть ниже распечатывает список всех сообщений, сделанных определенным пользователем.Пользователь был параметром, взятым из URL, и работает нормально.
Как мне извлечь ** kwarg -> 'username' и отобразить его в шаблоне как переменную?
Попробовано, что закомментировано в коде.
views.py
class AuthorPostIndexView(ListView):
model = Person
template_name ='authorpostindex.html'
context_object_name = 'author_post'
#1)
#date=request.GET.get('username','') -> wrong as varibales in classes
#is not possible?
#-> this works fine:
def get_queryset(self):
username = self.kwargs['username']
queryset = Person.objects.get(username=username).post.all()
return queryset, (username,'')
#-> attempts to extract username kwarg:
#2)
# def get_context_data(self, **kwargs):
# context = super(AuthorPostIndexView, self).get_context_data(**kwargs)
# context['username'] = self.username
# return context
#3)
# @property
# def username(self):
# return self.kwargs['username']
ожидаемый результат
template.html
<h1>{{username}}</h1> -> username from the URL should be displayed
Сообщения об ошибках:
1) «запрос» не определен (shell)
2) Объект AuthorPostIndexView не имеет атрибута 'username' (шаблон)
3) Реверс для 'post_detail' с аргументами '(' ',)' не найден.Попробован 1 шаблон (ов): ['post \ / (? P [0-9] +) $'] (шаблон)
пс.По-прежнему не работает после советов:
Решения выглядят одинаково, однако я думаю, что у меня есть проблема с получением аргумента kwarg из метода.Кроме того, я потерял уверенность в том, что положить в шаблон.
Могу ли я вернуть два аргумента в функцию, подобную этой?
class AuthorPostIndexView(ListView):
model = Post
template_name ='authorpostindex.html'
context_object_name = 'author_post'
def get_queryset(self):
queryset = super().get_queryset()
username = self.kwargs['username']
return (queryset.filter(authors__username=username),username)
Или в одном из предложенных решений я добавил метод к представлению
def get_context_data(self, **kwargs):
context = super(AuthorPostIndexView, self).get_context_data(**kwargs)
context['username'] = self.kwargs['username']
return context
...и тогда как насчет шаблона
authorpostindex.html
{{context}}
or
{{username}}
or
{{context.username}}
Это не работает