【发布时间】:2019-10-23 21:42:36
【问题描述】:
我正在尝试在我的一个模板中使用 get_absolute_url 函数,如下所示:
template.html
<div class="card-columns">
{% for category in main_categories %}
<div onclick="document.location = {{ category.get_absolute_url }};" class="card">
我对一般编程相当陌生,所以我不确定这是否是正确的方法,但我已经能够通过使用这样的 if 语句使其分别返回几个视图:
models.py
def get_absolute_url(self):
if self.pk == 1:
return reverse('forum:index')
if self.pk == 2:
return reverse('tutorials:cybertips')
return reverse('tutorials:subjects', args=[str(self.pk)])
我没有收到任何错误,当单击带有 pk=1 和 pk=2 的卡片时,它会返回正确的 url 模式。其他卡加载正常,但不链接到任何东西。在检查 html 时,它看起来像是返回了一个 url,所以我想知道我是否不理解 onclick 函数?这是我的网址(在这个应用程序中):
urls.py
app_name = 'tutorials'
url_patterns = [
path('category/<int:pk>/', views.SubjectView.as_view(), name='subjects'),
path('cybertips/', views.cybertips, name='cybertips'),
]
views.py
class MainCategoriesView(ListView):
model = MainCategory
context_object_name = 'main_categories'
class SubjectView(ListView):
model = Subject
context_object_name = 'subjects'
感谢任何帮助。或者,如果有更有效和更安全的方法来做到这一点。谢谢。
【问题讨论】:
-
谢谢你的链接,我今天会检查更多。我想我只需要阅读更多文档 =)
标签: python django django-models django-templates