Django:根据我们显示不同的内容

2024-06-01 03:02:09 发布

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

我想为我的个人项目创建一个学校管理系统。在

假设每个学校都有一个管理员。但是有一些管理员可以管理多个学校,他们可以在学校之间切换来管理每个学校。在

我想了一种方法,使用不同的URL路径

urlpatterns = [
    url(schools/<int:pk>/, SchoolView.as_view()),
]

有没有办法让我不分开使用不同的网址路径为每一所学校?不同的管理者使用不同的路径来呈现不同的管理者。在

但我真的不知道怎么做?我能给我个建议怎么做吗。非常感谢!在


Tags: 项目方法路径url管理员as管理系统学校
1条回答
网友
1楼 · 发布于 2024-06-01 03:02:09

每个view函数都接受一个request参数,因此无论您在何处定义视图函数,它都可能如下所示:

from django.shortcuts import render

def my_view(request):
    #you can check user here with request.user
    #example
    if request.user.is_superuser:
        return render('your_template_for_admin.html', {})
    return render('your_template_for_basic_user.html', {})

编辑:如果您使用的是基于类的视图,那么可以像这样重写它的get方法:

^{pr2}$

根据注释进行编辑:您可以使用get_context_data(),而不是@Daniel Roseman在评论中所说的get()。在

from django.views import View

class MyView(View):
    def get_context_data(self, **kwargs):
        #example code assuming that we have a relation between schools and admin A
        context = super().get_context_data(**kwargs)
        context['schools'] = School.objects.filter(admin_id=self.request.user__id)
        return context

然后可以在模板中使用schoolsqueryset。在

相关问题 更多 >