我正在努力研究如何/最好,最安全的方法来保持用户数据在我需要写的django网站中分开。
以下是我需要做的一个例子......
示例app ToDoList
使用django contrib.auth管理用户/密码等,我将拥有以下用户
汤姆 吉姆 利
将会有一个ToDo模型(在我的真实应用程序中会有其他模型)
class ToDo(models.Model):
user = models.ForeignKey(User)
description = models.CharField(max_length=20)
details = models.CharField(max_length=50)
created = models.DateTimeField('created on')
我遇到的问题 - 可能是在考虑这个问题:这将如何被锁定,因此汤姆只能看到汤姆的待办事项列表,李只能看到他的待办事项清单等等......
我看过一些帖子,说明你可以在每个查询中使用过滤器,或者使用网址,所以网址可能看起来像www.domain.com/username/todo
但无论哪种方式,我都不确定这是否是正确的方式/最好的方式,或者在阻止用户看到彼此数据方面的疯狂
欢呼声
理查德
答案 0 :(得分:9)
一种方法是过滤当前登录用户的ToDo项目:
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
from your_app.models import ToDo
@login_required
def todos_for_user(request):
todos = ToDo.objects.filter(user=request.user)
return render(request, 'todos/index.html', {'todos' : todos})
这会仅锁定已通过身份验证的用户的视图,并由登录用户从请求中进行筛选,另一个用户即使登录也无法访问其他用户的ToDo记录。希望能帮到你。
答案 1 :(得分:1)
像www.domain.com/username/todo这样的网址是实现它的一种方式,但它并不能保证您获得安全性。
您应该做什么在用户登录后将用户的登录信息保存在会话数据中,每次检查某个视图时,
我想这个链接可以帮助你完成工作。