如何使用Django将一个页面显示给loggedin用户,将另一个页面显示给notlogged用户?

2024-09-26 18:00:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我相信这个问题以前有人问过,但我在这里找不到答案

目标:显示一个用户,该用户没有登录随机分类的帖子,但是登录了自己所有的帖子

views.py中的两个视图:

def movement_random(request):
    movements = Movement.objects.order_by('?')[:10]
    return render(request, 'blog/movement_random.html', {'movements': movements})

@login_required
def movement_list(request):
    movements = Movement.objects.filter(author=request.user).order_by('-moved_on')
    return render(request, 'blog/movement_list.html', {'movements': movements})

从url.py:

从django.conf.url导入url,包括 从。导入视图

urlpatterns = [
    url(r'^$', views.movement_random, name='index'),
    url(r'^$', views.movement_list, name='movement_list'), 
    url(r'^movement/(?P<pk>\d+)/$', views.movement_detail, name='movement_detail'),
    url(r'^movement/new/$', views.movement_new, name='movement_new'),
    url(r'^movement/(?P<pk>\d+)/edit/$', views.movement_edit, name='movement_edit'),
    url(r'^accounts/', include('registration.backends.hmac.urls')),
]

就目前的情况来看,应用程序的“主页”始终是第一个URL,即使用户已登录。如何向登录用户显示views.movement_list,而向非用户显示views.movement_random


Tags: 用户namepy视图urlnewrequestdef
1条回答
网友
1楼 · 发布于 2024-09-26 18:00:29

有两个视图是没有意义的,只是根据是否在单个视图中进行了身份验证来设置移动

if request.user.is_authenticated():
    movements = Movement.objects.filter(author=request.user).order_by('-moved_on')
else:
    movements = Movement.objects.order_by('?')[:10]

相关问题 更多 >

    热门问题