【发布时间】:2026-01-19 22:40:01
【问题描述】:
所以我有一个 django 项目,并且有一个视图(主视图)显示关注用户的帖子,并且需要对用户进行身份验证,如果没有用户登录,则代码返回一个 'AnonimousUser ' 不是可迭代错误,如果此人在主视图上,我希望我的代码将匿名用户重定向到登录页面。经过一番调查,我意识到这可以通过自定义中间件来完成,但我不知道该怎么做,所以目前中间件只会在用户登录或匿名时打印。我可以做些什么来完成这个中间件并摆脱那个 Anoniomus User 错误?
中间件.py
class LoginRequiredMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
return response
def process_view(self, request, view_func, view_args, view_kwargs):
if(request.user.is_authenticated):
print(Authenticated")
else:
print("Anonimous user")
views.py
def home(request):
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)
urls.py
urlpatterns = [
path('', views.home, name='home'),
path('login', views.login, name='login'),
path('register', views.register, name='register'),
path('logout', views.logout, name='logout'),
path('<username>/', views.profile, name='profile'),
]
如果您有任何问题或需要查看更多代码,请告诉我;)
【问题讨论】:
-
这个django-login-required-middleware 包怎么样?
标签: python django django-models django-views middleware