[英]'AnonymousUser' object is not iterable on django
我一直在尝试重新创建一个社交网络,但在此过程中,我发现当用户注销时出现一个大错误,即 TypeError 'AnonymousUser' object is not iterable
我尝试了不同的方法来执行此操作,例如使用if not request.user.is_authenticated():
或 '@login_required' 但似乎没有任何效果。 如果未注册的用户试图查看一个页面,特别是主视图(主页),我想这样做,用户应该被重定向到登录页面。
视图.py
def home(request):
following, created = Following.objects.get_or_create(user=request.user)
user = Following.objects.get(user=request.user)
followed_users = [i for i in user.followed.all()]
followed_users.append(request.user)
contents = Post.objects.filter(user__in = followed_users)
context = {
"contents": contents,
}
print("nice")
return render(request, 'home.html', context)
def profile(request, username=None):
profile, created = Profile.objects.get_or_create(user=request.user)
if username:
post_owner = get_object_or_404(User, username=username)
profile_bio = Profile.objects.filter(user_id=post_owner)
user_posts = Post.objects.filter(user_id=post_owner)
else:
post_owner = request.user
user_posts = Post.objects.filter(user=request.user)
profile_bio = Profile.objetcs.filter(user=request.user)
args1 = {
'post_owner': post_owner,
'user_posts': user_posts,
'profile_bio': profile_bio,
}
return render(request, 'profile.html', args1)
网址.py
urlpatterns = [
path('login', views.login, name='login'),
path('register', views.register, name='register'),
path('logout', views.logout, name='logout'),
path('<username>/', views.profile, name='profile'),
]
urlpatterns = [
path('', views.home, name='home'),
]
如果您有任何问题或需要查看更多代码,请告诉我;)
处理要求用户登录的最佳方法是使用自定义中间件。
class RequireLoginMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
if request.path != LOGIN_PATH and request.user.is_anonymous():
return redirect('login')
else:
return response
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.