2016-04-20 1 views
3

Есть ли встроенное или стороннее приложение для настраиваемых URL-адресов?Django custom url structure

Я хотел бы иметь собственные сайты, например: example.com/article-type/article-name-2015-24-12

Где статья тип был бы создан из внешнего ключа и в конце URL было бы даты опубликования.

И в шаблонах я бы назвал их, используя {% url 'article' article.pk %}. (Так что в будущем, когда мой босс решит изменить структуру URL, мне не нужно менять его везде)

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

+0

Если меня не недоразумение, что вы хотите - вы можете сделать это только с Django URLs. Но вместо '{% url 'article'pk%}' это будет что-то вроде '{% url' article' article.name article.date%}' или еще лучше, у вас есть пуля по модели 'Article' и убедитесь, что он уникален, тогда вы можете просто использовать slug как таковой '{% url 'article' article.slug%}' – electrometro

ответ

2

Вы можете создать URL-адрес на модели, переопределяя the get_absolute_url() method.

Что-то вроде этого

def Something(models.Model): 
    name = models.CharField(max_length=100) 
    slug = models.SlugField() 
    created = models.DateTimeField() 
    article_type = models.ForeignKey(ArticleTypes) 

    def get_absolute_url(self): 
     return '/{}/{}-{}-{}-{}'.format(
      self.article_type, self.slug, self.created.year, 
      self.created.month, self.created.day) 

И в шаблоне, вы будете использовать

<a href="{{ something.get_absolute_url }}">{{ something.name }}</a>