Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 3, 2007 20:11:13

alafin
Root
От: Киев, Украина
Зарегистрирован: 2006-04-06
Сообщения: 756
Репутация: +  3  -
Профиль   Отправить e-mail  

Url в зависимости от полей класса

Всем привет!
У меня такой вопрос, к примеру, имеется класс:

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



Офлайн

#2 Фев. 3, 2007 22:00:01

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

Url в зависимости от полей класса

Попробуй SlugField использовать.



Офлайн

#3 Фев. 3, 2007 22:20:01

alafin
Root
От: Киев, Украина
Зарегистрирован: 2006-04-06
Сообщения: 756
Репутация: +  3  -
Профиль   Отправить e-mail  

Url в зависимости от полей класса

slivlen
пробовал, но судя по всему нужно еще кое-что где-то прописать.



Офлайн

#4 Фев. 4, 2007 09:44:54

alafin
Root
От: Киев, Украина
Зарегистрирован: 2006-04-06
Сообщения: 756
Репутация: +  3  -
Профиль   Отправить e-mail  

Url в зависимости от полей класса

Нет, правильно понял slivlen. Мне нужно сделать так чтобы страница была доступна по этому адресу http://example.com/ru/python т.е. как я понимаю нужно использовать SlugField и что-то прописать в urls.py. Только что надо прописать я не нашел?



Офлайн

#5 Фев. 4, 2007 10:12:30

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

Url в зависимости от полей класса

Вот это добавь попробуй.

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

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

P.S. Полностью, конечно, это проблему не решит. urls.py все равно придется подстраивать.



Офлайн

#6 Фев. 4, 2007 10:47:27

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

Url в зависимости от полей класса

ИМХО урлы 'http://example.com/ru/python' не стоит делать, если на сайте будет раздел с новостями и статьями, т.к. будет сложно понять что конкретно искать(новость или статью). Лучше сделать что-нибудь наподобии такого:
для новостей: http://example.com/news/ru/python
для статей: http://example.com/article/ru/python



Офлайн

#7 Фев. 4, 2007 12:43:26

alafin
Root
От: Киев, Украина
Зарегистрирован: 2006-04-06
Сообщения: 756
Репутация: +  3  -
Профиль   Отправить e-mail  

Url в зависимости от полей класса

slivlen
а что в urls.py нужно прописать чтобы заработатло?



Офлайн

#8 Фев. 4, 2007 13:05:50

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

Url в зависимости от полей класса

Все как обычно :) Типа такого:
(r'^(\w{2})/(\w+)', ‘your_view’)
(\w{2}) - получает код языка
(\w+) - slug
Потом в своем view ищешь статью с указанным языком и слагом.



Офлайн

#9 Фев. 4, 2007 15:22:10

alafin
Root
От: Киев, Украина
Зарегистрирован: 2006-04-06
Сообщения: 756
Репутация: +  3  -
Профиль   Отправить e-mail  

Url в зависимости от полей класса

slivlen спасибо разобрался.
Кто наступит на теже грабли смотрите http://www.djangobook.com/en/beta/chapter03/



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version