Как проверить наличие аутентифицированного пользователя и затем показать другое содержимое в django
Я пытаюсь сделать два разных местоположения пользователя. Одно - из моей модели пользователя, а другое - по умолчанию из представления. Я хочу, чтобы каждый раз, когда пользователь аутентифицирован, отображалось местоположение из модели, но если он не вошел в систему, то в представление должно передаваться местоположение по умолчанию.
Views.py
class Home(generic.TemplateView):
template_name = "Home.html"
def get_context_data(self, **kwargs):
context = super(Home, self).get_context_data(**kwargs)
if User.is_authenticated:
map_location = self.request.user.location_on_the_map
else:
map_location = Point(longitude, latitude, srid=4326)
context.update({
'job_listing': JobListing.objects.annotate(
distance=Distance("location_on_the_map", map_location)
).order_by("distance")[0:6]
})
return context
Измените это User.is_authenticated
на self.request.user.is_authenticated
Вам нужно изменить строку User.is_authenticated на self.request.user.is_authenticated, чтобы убедиться, что вы ссылаетесь на текущего пользователя.
Альтернативно вы можете добавить параметр запроса в вашу функцию, таким образом, вы можете использовать request.user.is_authenticated вместо этого, как показано ниже:
class Home(generic.TemplateView):
template_name = "Home.html"
def get_context_data(self, request, **kwargs):
context = super(Home, self).get_context_data(**kwargs)
if request.user.is_authenticated:
map_location = self.request.user.location_on_the_map
else:
map_location = Point(longitude, latitude, srid=4326)
context.update({
'job_listing': JobListing.objects.annotate(
distance=Distance("location_on_the_map", map_location)
).order_by("distance")[0:6]
})
return context