我正在Django建立一个简单的论坛,我有两个模型 - Topic和Subtopic。我需要限制对未经身份验证的用户访问某些主题和子主题,以便他们无法访问它们,而其他主题和子主题应该仍然可供所有用户访问 - 包括身份验证和匿名。例如,我的主题体育主题为足球,主题管理主题为 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 :(得分:0)
根据您的要求,您需要设置对象级权限,为此您可以使用django-guardian或django-rules
答案 1 :(得分:0)
在视图中使用@login_required
装饰器限制通过烦人的用户访问该视图
@login_required
def dashboard(request):
topics = Topic.objects.all()
return render(request, 'djangoforum/dashboard.html', {'topics': topics})