Джанго Нуб вопрос о разработке URL - PullRequest
0 голосов
/ 27 мая 2011

У меня есть вопрос по созданию моего 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 для фильтрации разговора пользователя.

Является ли последний более разумным подходом и / или в чем его недостаток?

Ответы [ 3 ]

3 голосов
/ 27 мая 2011

По общему признанию, это довольно субъективный вопрос, но я склонен помещать данные, относящиеся к конкретному пользователю, в начале URL. Поскольку разговоры являются ресурсом, принадлежащим пользователю, он будет следовать за пользователем. Непрочитанный - это действительно предикат, который отфильтровывает некоторые данные, например, диапазон страниц, или «помеченные звездочкой» элементы, что в конечном итоге приводит к параметру запроса. Наконец, мне нравится, что мои параметры легко конструировать в javascript, поэтому мой URL для этого будет выглядеть как

/users/tokenmacguy/conversations?unread=true

Если диалоги никогда не будут видны, кроме как для пользователя, которому они принадлежат, тогда они будут передаваться на ресурс для каждого пользователя, что-то вроде

/my-profile/conversations?unread=true
2 голосов
/ 27 мая 2011

Получите пользователя из объекта запроса, если непрочитанные разговоры не будут видны никому, кроме вошедшего в систему пользователя.

2 голосов
/ 27 мая 2011

Последний - более надежный подход, поскольку людям будет намного сложнее видеть непрочитанные разговоры других пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...