gpt4 book ai didi

django - 基于请求命名空间解析 URL

转载 作者:行者123 更新时间:2023-12-04 16:57:10 24 4
gpt4 key购买 nike

我正在使用 DjangoCMS 构建一个网站,该网站有大约 10 个相同应用程序的实例。这些不同的实例将仅用于在不同的页面上提供不同的文件。

一切正常,除非我转到应用程序的不同实例并转到详细信息 View 时,它会恢复到原始应用程序的 URL 和命名空间。

例如,去/university/term-syncc/单击 ListView 中的项目会将我重定向到 /marketing/4/或该项目的任何 ID。

如果我去/university/term-syncc/4/它有效,但我无法让该 URL 自动解析。我知道这与我的 get_absolute_url 有关调用 assets命名空间,但如何强制它检查当前的应用程序命名空间,然后从那里反向运行?

模型.py

def get_absolute_url(self):
return reverse("assets:asset_detail", kwargs={"id": self.id})

HTML
<li>
<a href="{{obj.get_absolute_url}}">{{ obj.name }} test</a>
</li>

网址.py
url(r'^$', asset_list_view, name="asset_list"),
url(r'^(?P<id>\d+)/$', asset_detail_view, name='asset_detail'),

最佳答案

对此的最佳解决方案是为您的应用程序提供配置模型。然后它可以为每个实例使用该配置。

pip install aldryn-apphooks-config

首先,文档在这里; http://docs.django-cms.org/en/latest/how_to/namespaced_apphooks.html#aldryn-apphooks-config

通过实现这个解决方案,你的方法变成了这样;
class Asset(models.Model):

app_config = AppHookConfigField(
AssetConfig,
verbose_name=_('Config'),
help_text='',
)

def get_absolute_url(self):
"""Returns the url for this object."""
if self.app_config and self.app_config.namespace:
namespace = '{0}:'.format(self.app_config.namespace)
else:
namespace = ''

return reverse(
'{0}assets:asset_detail'.format(namespace),
kwargs={"id": self.id}
)

不安装这个应用程序,你仍然可以命名你的应用程序钩子(Hook),使用 Application instance name页面高级设置中的字段。您可以改用它,但它需要传递 args/kwargs。

在您的 View 或模板中,您可以执行 request.current_page.application_namespace从页面获取命名空间,以便您可以将其用于链接。

关于django - 基于请求命名空间解析 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52972743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com