无法获取Django的get_absolute_url以正确设置链接

时间:2019-10-23 21:42:36

标签: python django django-models django-templates

我试图在我的模板之一中使用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语句,我已经能够使其分别返回几个视图:< / p>

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的卡片时,它将返回正确的网址格式。其他卡加载正常,但不链接任何东西。检查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'

感谢您的帮助。或者,如果有更有效,更安全的方法来执行此操作。谢谢。

1 个答案:

答案 0 :(得分:0)

所以我最终摆脱了onclick="document.location"的内容,只是将<div>包裹在a href="{{ category.get_absolute_url }}">中,链接正常工作。