URL Джанго не видит контекстную переменную - PullRequest
0 голосов
/ 30 октября 2018

У меня есть профиль, в котором я устанавливаю переменную контекста - ник пользователя:

class ProfileView(LoginRequiredMixin, TemplateView):
    template_name = 'profile/templates/profile.html'
    redirect_field_name = ''

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    profile_id = Profile.objects.get(pk=self.request.user.id)
    context['user_nick'] = Blogger.objects.get(profile_id=profile_id).nick
    return context

И URL для него:

path('bloggers/<slug:nick>/videos', bloggers_views.BloggerVideos.as_view(), name='blogger_videos'),

Также я передаю ник в моем navbvar:

{% if user.is_authenticated %}
    {% include 'navbar/templates/navbar.html' with nick=user_nick %}
{% endif %}

Ссылка на него как:

<li><a href= {% url 'bloggers' %}><span>Bloggers {{ nick }}</span></a></li>
<li><a href= {% url 'blogger_videos' nick %}>Blogger's videos</a></li>

Странно, что в первом случае Django правильно отображает ник, но во втором он вылетает со следующей ошибкой:

NoReverseMatch at /bloggers/Gardiner/videos
Reverse for 'blogger_videos' with arguments '('',)' not found. 1 pattern(s) 
tried: ['bloggers\\/(?P<nick>[-a-zA-Z0-9_]+)\\/videos$']

Ник вообще не видит:

candidate_subs {'nick': ''}

Каким будет возможное решение?

1 Ответ

0 голосов
/ 30 октября 2018

Вы передаете переменную как user_nick, а не nick. Кроме того, вы должны ссылаться на него в теге по ключевому слову аргумент. И в-третьих, вы должны поместить весь URL в кавычки в HTML.

<a href="{% url 'blogger_videos' nick=user_nick %}">
...