2017-10-05 103 views
0

我正在Django構建一個簡單的論壇,並且我有兩個模型 - 主題和副主題。我需要限制未經身份驗證的用戶訪問某些主題和子主題,以便他們無法訪問它們,而其他主題和子主題仍應可供所有用戶訪問 - 無論是已驗證用戶還是匿名用戶。例如,我有主題體育與副標題足球和主題管理與子標題HR。雖然第一個用戶應該可以訪問所有用戶,但第二個用戶只能訪問已認證的用戶。我如何實現這一目標? 這裏是我的儀表盤(其中所有的主題都列出)和副主題觀點:限制訪問非認證用戶的特定頁面

def dashboard(request): 
    topics = Topic.objects.all() 
    return render(request, 'djangoforum/dashboard.html', {'topics': topics}) 

def subtopic_view(request, slug): 
    current_user = request.user 
    form = ThreadForm(request.POST, request.FILES) 
    subtopic = get_object_or_404(SubTopic, slug=slug) 
    threads = Thread.objects.filter(subtopic=subtopic, ancestor_id=None).order_by('-created_date') 
    if request.method == 'POST': 
     if form.is_valid(): 
      thread = form.save(commit=False) 
      thread.subtopic = subtopic 
      thread.save() 
      return redirect(request.path) 
    return render(request, 'djangoforum/subtopic.html', { 
     'current_user': current_user, 
     'form': form, 
     'subtopic': subtopic, 
     'threads': threads 
    }) 

回答

0

使用@login_required裝飾在認爲會限制通過annoymous用戶訪問該視圖

@login_required 
def dashboard(request): 
    topics = Topic.objects.all() 
    return render(request, 'djangoforum/dashboard.html', {'topics': topics}) 

https://docs.djangoproject.com/en/1.11/topics/auth/default/#django.contrib.auth.decorators.login_required

+0

但事情是,例如,我已經得到主題體育與副主題足球和主題管理與副主題人力資源。雖然第一個用戶應該可以訪問所有用戶,但第二個用戶只能訪問已認證的用戶。 – AlexNikolaev94

相關問題