【问题标题】:Can't get Django's get_absolute_url to set up the link properly无法让 Django 的 get_absolute_url 正确设置链接
【发布时间】: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


【解决方案1】:

所以我最终摆脱了onclick="document.location" 的东西,只是将&lt;div&gt; 包裹在a href="{{ category.get_absolute_url }}"&gt; 中,链接就可以正常工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 2013-07-18
    • 2013-09-11
    • 1970-01-01
    相关资源
    最近更新 更多