Найти - Пользователи
Полная версия: Url в зависимости от полей класса
Начало » Django » Url в зависимости от полей класса
1
alafin
Всем привет!
У меня такой вопрос, к примеру, имеется класс:

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
slivlen
Попробуй SlugField использовать.
alafin
slivlen
пробовал, но судя по всему нужно еще кое-что где-то прописать.
alafin
Нет, правильно понял slivlen. Мне нужно сделать так чтобы страница была доступна по этому адресу http://example.com/ru/python т.е. как я понимаю нужно использовать SlugField и что-то прописать в urls.py. Только что надо прописать я не нашел?
slivlen
Вот это добавь попробуй.

def get_absolute_url(self):
return “/%s/%s/” % (self.lang, self.slug)

И для поля url лучше не CharField, а URLField использовать.

P.S. Полностью, конечно, это проблему не решит. urls.py все равно придется подстраивать.
slivlen
ИМХО урлы 'http://example.com/ru/python' не стоит делать, если на сайте будет раздел с новостями и статьями, т.к. будет сложно понять что конкретно искать(новость или статью). Лучше сделать что-нибудь наподобии такого:
для новостей: http://example.com/news/ru/python
для статей: http://example.com/article/ru/python
alafin
slivlen
а что в urls.py нужно прописать чтобы заработатло?
slivlen
Все как обычно :) Типа такого:
(r'^(\w{2})/(\w+)', ‘your_view’)
(\w{2}) - получает код языка
(\w+) - slug
Потом в своем view ищешь статью с указанным языком и слагом.
alafin
slivlen спасибо разобрался.
Кто наступит на теже грабли смотрите http://www.djangobook.com/en/beta/chapter03/
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB