Форум сайта python.su
Всем привет!
У меня такой вопрос, к примеру, имеется класс:
class Categories(models.Model):
lang = models.ForeignKey(Lang)
name = models.CharField(maxlength=15)
url = models.CharField(maxlength=40)
class Meta:
verbose_name_plural = ‘Categories’
class Admin:
pass
def __str__(self):
return self.name
как создавать новые url в зависимости от поля name. К примеру, если поле name будет иметь значение python, то адрес должен выглядеть:
http://example.com/ru/python
Офлайн
Попробуй SlugField использовать.
Офлайн
slivlen
пробовал, но судя по всему нужно еще кое-что где-то прописать.
Офлайн
Нет, правильно понял slivlen. Мне нужно сделать так чтобы страница была доступна по этому адресу http://example.com/ru/python т.е. как я понимаю нужно использовать SlugField и что-то прописать в urls.py. Только что надо прописать я не нашел?
Офлайн
Вот это добавь попробуй.
def get_absolute_url(self):
return “/%s/%s/” % (self.lang, self.slug)
И для поля url лучше не CharField, а URLField использовать.
P.S. Полностью, конечно, это проблему не решит. urls.py все равно придется подстраивать.
Офлайн
ИМХО урлы 'http://example.com/ru/python' не стоит делать, если на сайте будет раздел с новостями и статьями, т.к. будет сложно понять что конкретно искать(новость или статью). Лучше сделать что-нибудь наподобии такого:
для новостей: http://example.com/news/ru/python
для статей: http://example.com/article/ru/python
Офлайн
slivlen
а что в urls.py нужно прописать чтобы заработатло?
Офлайн
Все как обычно :) Типа такого:
(r'^(\w{2})/(\w+)', ‘your_view’)
(\w{2}) - получает код языка
(\w+) - slug
Потом в своем view ищешь статью с указанным языком и слагом.
Офлайн
slivlen спасибо разобрался.
Кто наступит на теже грабли смотрите http://www.djangobook.com/en/beta/chapter03/
Офлайн