如何在 Django View get_context_data中使用 request.path?



我想在视图中使用get_context_data网址的最后一部分。

例如:如果我有/foo/bar,我想在视图中的变量中获取/bar

def get_context_data(self, **kwargs):
    ctx = super().get_context_data(**kwargs)
    ctx["url"] = request.path.split('/')[:-1]
    return ctx

您可以使用 self.request 访问请求对象。因此,您可以在此处通过以下方式实现这一点:

    def get_context_data(self, **kwargs):
        ctx = super().get_context_data(**kwargs)
        ctx['url'] = self.request.path.split('/')[:-1]
        return ctx

请注意,通过使用 [:-1]可以构造字符串列表。所以当你输入/foo/bar时它会['', '/foo'].或['']用于/foo,或['', '/foo', '/bar']用于/foo/bar/qux

您可能希望在此处使用.rsplit(..)

    def get_context_data(self, **kwargs):
        ctx = super().get_context_data(**kwargs)
        ctx['url'] = self.request.path.rsplit('/', 1)[0]
        return ctx

相关内容

最新更新