Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django用户管理:如何避免每个用户看到来自其他用户的内容和数据?_Python_Django_Django Users - Fatal编程技术网

Python Django用户管理:如何避免每个用户看到来自其他用户的内容和数据?

Python Django用户管理:如何避免每个用户看到来自其他用户的内容和数据?,python,django,django-users,Python,Django,Django Users,在我的小Django项目中,用户可以注册,通过填写一些模型表单,他们可以用自己的数据填充现有模型 问题是,登录后,任何用户都不仅可以看到自己的数据,还可以看到其他用户创建的数据。 我需要避免这种情况。 每个用户都应该能够专门查看、修改和交互自己的数据 每个模型都有一个属性user,它是链接到用户的外键 我可能在视图中遗漏了什么吗 它们只是基于类的视图,不涉及用户,它们只是具有登录所需的mixin装饰器 对于登录视图,我使用Django标准,对于注册视图,我创建了一个UserFormView #

在我的小Django项目中,用户可以注册,通过填写一些模型表单,他们可以用自己的数据填充现有模型

问题是,登录后,任何用户都不仅可以看到自己的数据,还可以看到其他用户创建的数据。 我需要避免这种情况。
每个用户都应该能够专门查看、修改和交互自己的数据

每个模型都有一个属性user,它是链接到
用户的
外键

我可能在视图中遗漏了什么吗
它们只是基于类的视图,不涉及
用户
,它们只是具有
登录所需的mixin
装饰器

对于登录视图,我使用Django标准,对于注册视图,我创建了一个
UserFormView

# Register page
url(r'^register/$', views.UserFormView.as_view(), name='register'),

# Login page
url(r'^accounts/login/$', auth_views.LoginView.as_view(), name='login'),
以下是我的观点:

class AllProgramsView (LoginRequiredMixin, generic.ListView):
    template_name = 'programs/index.html'
    context_object_name = 'programs_list'

    def get_queryset(self):
        return Program.objects.all()

class ProgramDetailView (LoginRequiredMixin, generic.DetailView):
    model = Program
    template_name = 'programs/program.html'

class ProgramCreate(LoginRequiredMixin, CreateView):
    model = Program
    form_class = ProgramFormClass

class ProgramUpdate(LoginRequiredMixin, UpdateView):
    model = Program
    form_class = ProgramFormClass
models.py中

class Program(models.Model):
    program_name = models.CharField(max_length=50)
    program_description = models.CharField(max_length=250)
    is_favourite = models.BooleanField(default="False")
    user = models.ForeignKey(User, on_delete=models.CASCADE)

    def get_absolute_url(self):
        return reverse('programs:program', kwargs={'pk': self.pk})

    def __str__(self):
        return self.program_name

是否要执行正确的程序来将每个用户与其他用户分开?

您可以获取当前用户,该用户请求查看并仅通过以下方式筛选其记录

class AllProgramsView (LoginRequiredMixin, generic.ListView):
 template_name = 'programs/index.html'
 context_object_name = 'programs_list'

 def get_queryset(self):
    user = self.request.user
    queryset = Program.objects.filter(user=user)
    return queryset

您可以获取请求查看的当前用户,并仅通过以下方式筛选其记录

class AllProgramsView (LoginRequiredMixin, generic.ListView):
 template_name = 'programs/index.html'
 context_object_name = 'programs_list'

 def get_queryset(self):
    user = self.request.user
    queryset = Program.objects.filter(user=user)
    return queryset

您可以使用request.user来区分哪个用户正在请求数据。您可以发布视图。有了这一点,人们可以更清楚地回答Hi@Rajez,我刚刚编辑了我的问题,以包括视图。对于每个用户,对程序模型的查询是如何不同的?你介意把你的节目发出去吗Model@ArpitSolanki嗨,是的,我会添加模型。要回答您的问题,每个用户都可以创建自己的程序,并且在列表视图中,他们应该能够看到自己创建的所有程序。现在的问题是,所有用户都可以看到所有现有的程序(也由其他用户创建),而不仅仅是他们自己的程序。您可以使用request.user来区分请求数据的用户您可以发布视图吗。有了这一点,人们可以更清楚地回答Hi@Rajez,我刚刚编辑了我的问题,以包括视图。对于每个用户,对程序模型的查询是如何不同的?你介意把你的节目发出去吗Model@ArpitSolanki嗨,是的,我会添加模型。要回答您的问题,每个用户都可以创建自己的程序,并且在列表视图中,他们应该能够看到自己创建的所有程序。现在的问题是,所有用户都看到了所有现有的程序(也是由其他用户创建的),而不仅仅是他们自己的程序。在我的程序模型中(我已经将其添加到问题中,以防您要检查它),我有一个与用户模型具有外键关系的字段用户。我尝试按照您的建议添加
code
user=self.request.user queryset=Program.objects.filter(user=user)返回queryset,但它不起作用。这段代码有什么问题吗?清除浏览器并刷新,它成功了!非常感谢。在我的程序模型中(我已将其添加到问题中,以防您想要检查它),我有一个与用户模型有外键关系的字段用户。我尝试按照您的建议添加
code
user=self.request.user queryset=Program.objects.filter(user=user)返回queryset,但它不起作用。这段代码有什么问题吗?清除浏览器并刷新,它成功了!非常感谢你。