Как создать общие ссылки в Django? (аналогично вставкам ссылок) - PullRequest
0 голосов
/ 09 января 2011

Одна функция, которую я хотел бы добавить в свое приложение django, - это возможность для пользователей создавать некоторый контент (без регистрации / создания учетной записи), а затем генерировать специфичную для контента ссылку, которой пользователи могут поделиться с другими. Нажатие на ссылку вернет пользователя к созданному им контенту.

По сути, я бы хотел, чтобы поведение было похожим на сайты, такие как pastebin - где пользователи получают ссылку на pastebin, которой они могут поделиться с другими людьми (пример: http://pastebin.com/XjEJvSJp)

Я не уверен, что лучше всего создавать ссылки такого типа - у кого-нибудь есть идеи?

Спасибо!

Ответы [ 4 ]

1 голос
/ 09 января 2011

Если вы не возражаете, что ваши URL-адреса станут немного длиннее, посмотрите на модуль uuid .Это должно гарантировать уникальные идентификаторы.

1 голос
/ 09 января 2011

Обычно все, из чего состоит, - это токен (возможно, случайный, возможно, последовательный), плюс контент, хранящийся в БД и затем обслуживаемый по запросу.

0 голосов
/ 09 января 2011

В основном вам просто нужно представление, которое хранит данные, и представление, которое их отображает.

например, Хранить с:

server.com/objects/save

И затем, после сохранения новой модели, это может бытьдостигается с помощью

server.com/objects/[id]

, где [id] - это идентификатор модели, которую вы создали при сохранении.

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

0 голосов
/ 09 января 2011

Вы можете создавать эти ссылки любым удобным вам способом, если каждая ссылка уникальна. Например, возьмите MD5 содержимого и используйте первые 8 символов шестнадцатеричного дайджеста.

Простая модель для этого может быть:

class Permalink(models.Model):
    key = models.CharField(primary_key = True, max_length = 8)
    refersTo = models.ForeignKey(MyContentModel, unique = True)

Вы также можете сделать refersTo свойством, которое автоматически присваивает уникальный ключ (как описано выше).

И вам нужен соответствующий URL:

url("^permalink/(?P<key>[a-f0-9]{8})$",
    "view.that.redirects.to.permalink.refersTo"),

Вы поняли ...

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