Я предполагаю, что вы уже импортировали модуль Profile
(с from .models import Profile
или подобным) и не понимаете, почему он не существует (если у вас его нет, вам нужно добавить этот импорт вначало вашего файла).
Даже если вы импортировали его, этот код не будет работать.Ваша проблема в том, что вы присваиваете имя Profile
в области действия функции, что делает его локальной переменной, а локальные переменные являются локальными (но изначально пустыми) от начала функции.Попытка получить к ним доступ до того, как они будут назначены, поднимает UnboundLocalError
, который вы видите (эта ошибка только возникает, когда вы пытаетесь читать с локального имени перед тем, как оно назначено;не может быть вызван просто невозможностью импортировать модуль, который просто вызовет NameError
).Вы не могли видеть глобально импортированный Profile
, даже если вы действительно импортировали его, потому что в функции Profile
должен быть локальным или глобальным, он не может быть и тем и другим.
Чтобы исправить, выберите другое имя для вашей локальной переменной, чтобы глобальная Profile
оставалась доступной:
def feed(request):
if request.user.is_authenticated:
user=request.user
profile=Profile.objects.filter(user=user) # This line is fine!
userfollowing=FollowingProfiles.objects.filter(Profile=profile)
for following in userfollowing:
username=following.ProfileName
useraccount=User.objects.filter(username=username)
# Use lowercase profile, not Profile
# Profile=Profile.objects.filter(user=useraccount) # This line was the problem!
profile = Profile.objects.filter(user=useraccount) # This line is the solution!
Post = post.objects.filter(Profile=profile) # Change to match new name
... rest of your code ...
Ранее вы уже правильно использовали profile
в нижнем регистре и больше никогда не нуждались в этом, поэтомуЯ только что использовал это имя.