python 用户名=self.kwargs.get('username ')返回未找到:/

rqdpfwrv  于 2022-10-30  发布在  Python
关注(0)|答案(2)|浏览(123)

您好,我正在尝试设置显示仅与当前登录的特定用户相关的项目。
我已确定该用户在其用户名下有项目。我希望筛选项目,使其仅允许相关用户查看。目前我收到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

我已经尝试将带有过滤器的queryset设置为登录用户,但返回了相同的错误。
以下是我的观点,我已经尝试过

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 %}

我的问题:

我如何显示只与登录用户相关的项目列表?我在这里做错了什么?

zf9nrax1

zf9nrax11#

您确定未找到错误是从视图内部引发的吗?可能您不知何故放错了URL,请求找不到URL。您确定您的请求到达视图吗?您可以使用简单的打印来验证。如果不是,请确保您已将URL包含在根URL文件中。

a6b3iqyw

a6b3iqyw2#

由于self.kwargs是一个键值对,因此需要通过

self.kwargs[f'username']  #f string if it is a variable which it should be.
Not
self.kwargs.get('username')

相关问题