Не удается получить get_absolute_url в Django для правильной настройки ссылки - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь использовать функцию 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:

модели. 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? Вот мои URL (в этом приложении):

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 голосов
/ 25 октября 2019

Так что я закончил тем, что избавился от onclick="document.location" материала и просто обернул <div> в a href="{{ category.get_absolute_url }}">, и ссылки работают просто отлично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...