【问题标题】:How do I add a prefix to all urls and generically parse that as a kwarg如何为所有 url 添加前缀并将其一般解析为 kwarg
【发布时间】:2009-11-07 18:58:23
【问题描述】:

假设我有一个网站,其中所有网址都是特定于用户名的。

例如 /username1/points/list 是该用户的积分列表。

如何从所有 url 中获取 url 的 /username1/ 部分并将其添加为所有视图的 kwarg?

或者,最好抓住 /username1/ 部分并将其作为 request.view_user 附加到请求中。

【问题讨论】:

    标签: django django-urls


    【解决方案1】:

    您可以考虑使用middlware 来攻击它。具体使用 process_request。这被称为 before 调用 urlresolver 并且您可以对您想要的请求(在这种情况下为 request.path)做几乎任何事情。您可以删除用户名并将其存储在请求对象中。具体情况(显然)取决于您想要/不想移除第一个路径组件的条件。

    更新评论: 无论您采用哪种方式,当您调用reverse() 时,您必须为其提供额外的上下文信息——它不能只是自动地自行解决。 Django 不玩任何幕后游戏——一切都是直接的 Python,并且没有任何全局状态在舞台外浮动。我认为这是一件好事™。

    【讨论】:

    • 这种方法效果很好。但是 - 我正在努力将反向路径组件返回到用于反向 url 的 url 中。关于给定反向的任何建议都无权访问请求对象以访问该用户?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 2011-10-14
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多