Причина, по которой я хочу использовать одно и то же представление для каждой конечной точки URL, заключается в том, что представление отправляет информацию об уведомлении аутентифицированному пользователю.
Например, вот представление, в котором есть данные, которые я хотел бы отображать на каждой странице:
class NotificationsView(View):
def get(self, request, *args, **kwargs):
profile = Profile.objects.get(user__username=self.request.user)
notifs = profile.user.notifications.unread()
return render(request, 'base.html', {'notifs': notifs})
Я пытаюсь отправить переменные контекста в свой шаблон для использования с javascript. Файл JS существует отдельно от шаблона, поэтому я пытаюсь сначала объявить глобальные переменные JS в базовом шаблоне, а затем использовать их в файле JS.
base.html:
...
{% include "landing/notifications.html" %}
<script src="{% static 'js/notify.js' %}" type="text/javascript"></script>
{% register_notify_callbacks callbacks='fill_notification_list, fill_notification_badge' %}
лендинг/уведомления.html:
<script type="text/javascript">
var myuser = '{{request.user}}';
var notifications = '{{notifs}}';
</script>
уведомление.js:
...
return '<li><a href="/">' + myuser + notifications + '</a></li>';
}).join('')
}
}
Основываясь на этом коде, вы можете видеть, как я оказался в затруднительном положении, когда мне нужно использовать CBV для отправки правильных уведомлений в файл Landing/Notifications.html, чтобы убедиться, что переменные javascript могут динамически отображаться для JS-файл.
Я совершенно не понимаю, как должен быть подключен URL.
Примерно так:
url(
regex=r'^notes$',
view=views.NotificationsView.as_view(),
name='home'
),
ограничивает меня определенной конечной точкой ("/notes").
Как бы вы предложили мне обойти это?