在我的小型Django项目中,用户可以注册并填写一些ModelForms,他们可以使用自己的数据填充现有模型。
问题是登录后,任何用户不仅可以看到自己的数据,还可以看到其他用户创建的数据。
我需要避免这种情况
每个用户都应该能够查看,修改和独占自己的数据。
每个模型都有属性user,该ForeignKey
链接到User
。
我可能在观点中遗漏了什么吗?
它们只是基于类的视图,没有引用User
,它们只有LoginRequiredMixin
装饰器。
对于我正在使用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
是否有正确的程序来保持每个用户与其他用户分开?
答案 0 :(得分:2)
您可以获取当前用户,该用户正在请求查看并仅过滤其记录,如下所示
def abspath(relpath):
import os
absdir = os.path.realpath('__file__')
absdir = absdir.split('_')[0].replace('\\', '/')
filename = str(absdir + relpath )
print (filename)
return filename;