У меня есть панель навигации, где пользователь может войти в систему, и после входа в систему у пользователя будет раскрывающееся меню со ссылкой на его / ее профиль.Вот мои коды:
navbar.html:
{% url 'students:student_profile_view' as student_profile_url %}
{% if request.user.is_authenticated %}
<!-- User Dropdown Menu -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="far fa fa-user"></i> {{request.user.first_name}}</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{{ student_profile_url }}">Profile</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="{{ logout_url }}">Logout</a>
</div>
</li>
студентов / urls.py:
path('profile/<slug:slug>/', views.student_profile_view, name='student_profile_view'),
Students / Model.py:
from django.contrib.auth.models import User
from django.utils.text import slugify
class StudentProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
slug = models.SlugField(blank=True, unique=True)
avatar = models.ImageField(upload_to='student_profile/', null=True, blank=True)
description = models.CharField(max_length=120, null=True, blank=True)
objects = models.Manager()
def save(self, *args, **kwargs):
self.slug = slugify(self.user)
super(StudentProfile, self).save(*args, **kwargs)
def __str__(self):
return self.user.username
def get_absolute_url(self):
# return 'students:student_profile_view', (), {'slug': self.slug}
return reverse("students:student_profile_view", kwargs={"slug": self.slug})
Navbar.html является базовым шаблоном, он не отображается через представление, где я мог бы передать объект и затем вызвать object.get_absolute_url
Прямо сейчас кнопка профиля в раскрывающемся меню моей панели навигации не работает, так как не находит обратного соответствия для пользователя.
Кроме того, после входа в систему я попытался вручную ввести ссылку на профиль в моем браузере следующим образом:http://127.0.0.1:8000/students/profile/jimhalpert/
Я получаю сообщение об ошибке: Обратное для 'student_profile_view' без аргументов не найдено.Приведено 1 рисунков: ['студентов / профиль / (? P [-a-zA-Z0-9 _] +) / $'] Уверяю вас, слизняк правильный.
Есть ли способ использовать get_absolute_url
в navbar.html?почему не работает жесткое кодирование ссылки в браузере?Пожалуйста помоги.