Username=self.kwargs.get('username') returning Not Found: /
Здравствуйте, я пытаюсь настроить показ элементов, относящихся только к определенному пользователю, который в данный момент вошел в систему.
Я убедился, что у пользователя есть элементы под его именем пользователя. Я хочу отфильтровать элементы для просмотра только для связанного пользователя. В настоящее время я получаю ошибку Not Found: /
Я не уверен, почему?
Вот models.py:
class Item(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True, null=True)
Вот urls.py:
urlpatterns = [
#path('', home.as_view(), name='home'), <-- Returned not found
path('user/<str:username>/', home.as_view(), name='home'), <-- Retuned Not found as well
Я попытался выполнить набор запросов с фильтром для вошедшего пользователя, но вернулась та же ошибка.
Вот мои взгляды, которые я пробовал
class home(LoginRequiredMixin, ListView):
model = Item
template_name = 'app_name/base.html'
context_object_name = 'items'
# queryset = Item.objects.filter(user=User)
def get_queryset(self):
user = get_object_or_404(User, username=self.kwargs.get('username'))
print(user)
# return Item.objects.filter(user=user)
В файле home.html я добавил:
{% block head_title %} {{ view.kwargs.username }} | {% endblock %}
Мой вопрос:
Как я могу показать список элементов, относящихся только к вошедшему пользователю? Что я здесь делаю не так?
Поскольку self.kwargs является парой ключ-значение, вам нужно получить доступ к val по
self.kwargs[f'username'] #f string if it is a variable which it should be.
Not
self.kwargs.get('username')
Вы уверены, что ошибка not found возникает внутри вашего представления? Возможно, вы как-то неправильно расположили URL, и запрос не может найти URL. Вы уверены, что ваш запрос достигает представления? Вы можете проверить это с помощью простой печати. Если нет, убедитесь, что вы включили ваши URL в корневой файл urls.