【发布时间】:2019-03-29 02:09:57
【问题描述】:
我正在使用 DjangoCMS 构建一个网站,其中包含大约 10 个相同应用程序的实例。这些不同的实例将仅用于在不同的页面上提供不同的文件。
一切正常,除非我转到应用程序的不同实例并转到详细视图,它会恢复到原始应用程序的 URL 和命名空间。
例如,转到 /university/term-syncc/ 并单击列表视图中的某个项目会将我重定向到 /marketing/4/ 或该项目的任何 ID。
如果我转到/university/term-syncc/4/它可以工作,但我无法让该 URL 自动解析。我知道这与我的 get_absolute_url 调用 assets 命名空间有关,但我如何强制它检查当前的应用命名空间,然后从那里反向运行?
models.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>
urls.py
url(r'^$', asset_list_view, name="asset_list"),
url(r'^(?P<id>\d+)/$', asset_detail_view, name='asset_detail'),
【问题讨论】:
-
您是否尝试使用 django 详细信息视图进行操作?
-
不太清楚你的意思
-
@ChrisWendel 您是否已为所有应用程序命名?在每个的 urls.py 文件中?
-
是否需要为每个应用实例创建一个新的 urls.py 文件?我会将这些 url 文件放在哪里?
-
@ChrisWendel 您可以将 urls.py 放在每个应用程序中,然后将它们全部包含在项目的 urls.py 中。如果您以这种方式设计您的项目,您将能够为每个 urls.yp 文件提供自己的命名空间,而不是在整个项目中明确地调用来自不同应用程序的 url。
标签: django namespaces django-urls django-cms