我试图在我的模板之一中使用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'
感谢您的帮助。或者,如果有更有效,更安全的方法来执行此操作。谢谢。
答案 0 :(得分:0)
所以我最终摆脱了onclick="document.location"
的内容,只是将<div>
包裹在a href="{{ category.get_absolute_url }}">
中,链接正常工作。