Уведомления

Группа в Telegram: @pythonsu

#1 Май 25, 2012 18:41:47

iga
От:
Зарегистрирован: 2011-05-21
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка с фильтром

Всем привет.

Немного зашел в тупик. Смотрю в книге примеры, но как то у меня не выходит. Вот такая ошибка.

invalid literal for int() with base 10: 'Lix'

class Category(models.Model):
	title = models.CharField(max_length=40)
	def __unicode__(self):
		return self.title
class Post(models.Model):
	creator = models.ManyToManyField(Author)
	category = models.ManyToManyField(Category)
	status = models.CharField(max_length=1, choices=STATUS_CHOICES)
	title = models.CharField(max_length=50)
	content = models.TextField()
	tags = models.CharField(max_length=30)
	date = models.DateTimeField()
	def __unicode__(self):
		return self.title

def get_categories_posts(request, category):
	get_list = Post.objects.filter(category=category)
	return HttpResponse(get_list)

url(r'^category/([a-zA-Z]+)$', get_categories_posts),



Отредактировано iga (Май 25, 2012 18:43:12)

Офлайн

#2 Май 25, 2012 19:46:15

svas
От:
Зарегистрирован: 2010-01-27
Сообщения: 239
Репутация: +  9  -
Профиль   Отправить e-mail  

Ошибка с фильтром

category в функции get_categories_posts должен быть числом. url должен быть таким url(r'^category/(\d+)/$', get_categories_posts)

Если вы хотите выбарать category по title то в функции get_categories_posts
Post.objects.filter(category=Category.objects.get(title=category))



Отредактировано svas (Май 25, 2012 19:48:43)

Офлайн

#3 Май 26, 2012 01:02:06

Chern
От: Киев
Зарегистрирован: 2010-09-15
Сообщения: 71
Репутация: +  3  -
Профиль   Отправить e-mail  

Ошибка с фильтром

svas
Post.objects.filter(category=Category.objects.get(title=category))

Что же вы человеку глупости показываете…

Post.objects.filter(category__title=category)



Офлайн

#4 Май 26, 2012 10:08:06

vvpoloskin
От:
Зарегистрирован: 2011-09-02
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка с фильтром

Заведите привычку - именуйте параметры в URL's.

r'^category/(?P<obj_des>\d+)$'



Офлайн

#5 Май 26, 2012 12:05:28

iga
От:
Зарегистрирован: 2011-05-21
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка с фильтром

Спасибо за ответы. Дело в том, что category не должен быть числом, а выглядеть примерно так:

http://local_blog.com/category/Linux/

или

http://local_blog.com/category/About nginx/

Поэтому у меня получился в итоге такой шаблон для url.py

 url(r'^category/([A-Za-z\s]+)/$', get_categories_posts),

С view.py все ок, спасибо за исправления.



Отредактировано iga (Май 26, 2012 12:06:57)

Офлайн

#6 Май 26, 2012 14:05:40

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Ошибка с фильтром

iga
Спасибо за ответы. Дело в том, что category не должен быть числом, а выглядеть примерно так:

http://local_blog.com/category/Linux/

или

http://local_blog.com/category/About nginx/

Поэтому у меня получился в итоге такой шаблон для url.py

 url(r'^category/([A-Za-z\s]+)/$', get_categories_posts),

С view.py все ок, спасибо за исправления.
А с чем связаны подобные ограничения? У каждой записи в БД есть уникальный ID, логично и правильно передавать в URLe именно его



Офлайн

#7 Май 26, 2012 14:10:39

iga
От:
Зарегистрирован: 2011-05-21
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка с фильтром

FishHook
А с чем связаны подобные ограничения? У каждой записи в БД есть уникальный ID, логично и правильно передавать в URLe именно его

Что бы был нормальный URL, а не к примеру …/category/24/

Если я вас правильно понял.



Отредактировано iga (Май 26, 2012 14:11:24)

Офлайн

#8 Май 27, 2012 07:38:54

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Ошибка с фильтром

iga
FishHook
А с чем связаны подобные ограничения? У каждой записи в БД есть уникальный ID, логично и правильно передавать в URLe именно его

Что бы был нормальный URL, а не к примеру …/category/24/

Если я вас правильно понял.
Если Вы посмотрите в строку адреса этого топика, то увидите
http://python.su/forum/topic/14668/
а не
http://python.su/forum/topic/FishHook_otvechaen_iga_na_vopros_ob_durackih_urlah
Юзера вообще не должно интересовать, что там в URLe, а Вы избавите себя от геморройных решений, если не будете изобретать велосипедов. Зашивать ID в адресе это нормальная и общепринятая практика, в отличие от



Офлайн

#9 Май 27, 2012 09:31:41

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Ошибка с фильтром

FishHook
Юзера вообще не должно интересовать, что там в URLe
А поисковик интересует.
В Django есть Slugfield
И тогда url можно сделать такой: http://stackoverflow.com/questions/837828/how-do-i-create-a-slug-in-django (кстати ссылка по теме и из нее видно о чем она, а поисковику так совсем хорошо от таких ссылок )
Т.е. выбор будет по id (837828), а slug для поисковика. Хотя можно без id обойтись и выбирать по slug.

Отредактировано reclosedev (Май 27, 2012 09:32:51)

Офлайн

#10 Май 27, 2012 11:28:07

iga
От:
Зарегистрирован: 2011-05-21
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка с фильтром


Вот, вот именно из-за соображений индексации и склоняюсь в сторону длинных, но понятных УРЛ.

И тогда url можно сделать такой: http://stackoverflow.com/questions/837828/how-do-i-create-a-slug-in-django (кстати ссылка по теме и из нее видно о чем она, а поисковику так совсем хорошо от таких ссылок )



Отредактировано iga (Май 27, 2012 11:33:08)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version