简体   繁体   English

如何使用Django将一个页面显示给已登录的用户,将另一个页面显示给未登录的用户?

[英]How do I show one page to logged-in user and another to a not-logged in user with Django?

I'm confident that this question has been asked before, but I can't find an answer here. 我相信这个问题已经被问过了,但是我在这里找不到答案。

The goal : show a user that isn't logged in a random assortment of posts but a user that is logged in all of their own posts. 目标 :显示未登录随机分类帖子的用户,但显示登录其所有帖子的用户。

The two views from views.py: 来自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})

From urls.py: 从urls.py:

from django.conf.urls import url, include from . 从django.conf.urls导入URL,包括from。 import views 导入视图

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')),
]

As it stand right now, the "homepage" for the app is, right now, always the first URL, even with a logged-in user. 就目前而言,该应用程序的“主页”始终是第一个URL,即使有登录用户也是如此。 How do I show the views.movement_list to a logged-in user while the views.movement_random to a non-user? 如何将views.movement_list显示给已登录的用户,而如何将views.movement_random给非用户?

It doesn't make sense to have two views, just set the movements dependant on whether you're authenticated in the single view 有两个视图没有任何意义,只需根据您是否在单个视图中通过身份验证来设置移动

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM