2017-03-01 40 views
2

我相信這個問題之前已經被問過了,但我在這裏找不到答案。如何使用Django向已登錄的用戶顯示一個頁面並向另一個未登錄的用戶顯示另一個頁面?

目標:顯示未在帖子的隨機分類記錄了用戶但是被記錄在自己的一切職位用戶。

從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}) 

從urls.py:

從django.conf.urls進口網址,包括 。導入視圖

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顯示爲非用戶?

回答

3

它沒有意義有兩種觀點,剛纔設置的運動依賴於你在單一視圖

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

我不希望他們被渲染爲兩個視圖中HTMLS是否要驗證是相同的 –

+0

@MosesKoledoye - 的確如此,但是從他們的用例描述中,我看不到他們不應該這樣做的原因(否則只需在這裏爲模板名稱設置兩個變量) – Sayse

相關問題