关于设计URL的django noob问题

关于设计URL的django noob问题,django,url,Django,Url,我有一个关于创建我的url的问题。我有一个这样的模型- class Conversation(models.Model): created_on = models.DateTimeField(auto_now_add=True) subject = models.TextField() started_by = models.ForeignKey(User,related_name='creator') target = models.ForeignKey(Use

我有一个关于创建我的url的问题。我有一个这样的模型-

class Conversation(models.Model):
    created_on = models.DateTimeField(auto_now_add=True)
    subject = models.TextField()
    started_by = models.ForeignKey(User,related_name='creator')
    target = models.ForeignKey(User,related_name='receiver')

class UnreadItems(models.Model):
    unread = models.BooleanField()
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    user = models.ForeignKey(User,null=True)
    content_object = generic.GenericForeignKey('content_type','object_id')
我需要一个视图,在此视图中,我返回当前登录用户的所有未读对话(我的应用程序中有大约3类用户)。对于我的url,我可以使用
foo.com/conversation/unread?user_id=234fsg88j
,或者我可以简单地使用
foo.com/conversation/unread/
并使用
request.user
来过滤用户的对话


后者是一种更合理的方法和/或使用它的缺点是什么

后者是一种更合理的方法,因为它会使人们更难看到其他用户的未读对话。

从请求对象获取用户,除非登录用户以外的任何人都可以看到未读对话。

不可否认,这是一个相当主观的问题,但我倾向于将特定用户的数据放在url的前面。由于会话是属于用户的资源,因此这将跟随用户。“未读”实际上是一个谓词,它过滤掉一些数据,就像页面范围或“带星号”的项目一样,因此最终会出现在查询参数中。最后,我希望我的参数在javascript中易于构造,因此我的url如下所示

/users/tokenmacguy/conversations?unread=true
如果除了拥有对话的用户之外,对话永远都不应该是可见的,那么对话将在每个用户的资源上进行,比如

/my-profile/conversations?unread=true

我是一个
+1
,因为未读是一个参数,因为以后你可以使用其他东西,比如
unread=false
或者
latest=10
或者
top=50
等等。这样他就必须测试tokenmacguy==request.user.username,这看起来有点多余。“未读过滤器”作为一个参数确实是有意义的。@Paulo:第一种方法是向任何允许查看的人显示MacGuy的帖子。如果这在应用程序的上下文中没有意义,那么第二个建议可能更好。因为OP提到了“当前登录用户”,我把它理解为一个特殊情况,但总的来说,你是绝对正确的。