Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 22, 2014 20:30:57

Code_Bryant
Зарегистрирован: 2014-02-22
Сообщения: 7
Репутация: +  1  -
Профиль  

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

Всем привет! Очень туплю или что-то не замечаю или просто не знаю как сделать правильно, но возникла такая проблема: “invalid literal for int() with base 10: ‘neydachka’”

views.py

from django.shortcuts import render_to_response
from Blog.models import *
def index(request):
    return render_to_response('Blog/index.html')
def post(request, post_id):
    post = Post.objects.get(id=post_id)
    comment = Comment.objects.get(post=post)
    return render_to_response('Blog/post.html', {'post': post, 'comment': comment})
def blog(request):
    posts = Post.objects.all().order_by('-create_date')
    categories = Category.objects.all()
    return render_to_response('Blog/blog.html', {'posts': posts, 'categories': categories})
def category(request, cat):
    posts = Post.objects.get(category=cat)
    return render_to_response('Blog/category.html', {'posts': posts})

urls.py
from django.conf.urls import patterns, include, url
from Blog.views import *
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
    # Examples:
    url(r'^$', index),
    url(r'^post/([0-9]+)?/$', post),
    url(r'^blog/$', blog),
    url(r'^blog/category/([a-zA-Z0-9]+)?/$', category),
    # url(r'^VAKSA/', include('VAKSA.foo.urls')),
    # Uncomment the admin/doc line below to enable admin documentation:
    #url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
    # Uncomment the next line to enable the admin:
    url(r'^admin/', include(admin.site.urls)),
)

models.py
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Category(models.Model):
    name = models.CharField(max_length=50, verbose_name='Имя категории транслитом')
    title = models.CharField(max_length=50, verbose_name='Название категории')
    class Meta:
        verbose_name = 'категорию'
        verbose_name_plural = 'Категории'
    def __str__(self):
        return self.title
class Tag(models.Model):
    name = models.CharField(max_length=50, verbose_name='Имя тега транслитом')
    title = models.CharField(max_length=50, verbose_name='Название тега')
    class Meta:
        verbose_name = 'тег'
        verbose_name_plural = 'Теги'
    def __str__(self):
        return self.title
class Post(models.Model):
    user = models.ForeignKey(User, related_name='Автор')
    title = models.CharField(max_length=100, verbose_name='Название поста')
    description = models.TextField()
    create_date = models.DateTimeField(auto_now_add=True, verbose_name='Дата создания')
    category = models.ForeignKey(Category, verbose_name='Категория')
    tag = models.ManyToManyField(Tag, verbose_name='Теги')
    class Meta:
        verbose_name='пост'
        verbose_name_plural='Посты'
    def __str__(self):
        return self.title
class Comment(models.Model):
    content = models.TextField(verbose_name='Текст комментария')
    post = models.ForeignKey(Post, related_name='posts', verbose_name='Пост')
    user = models.ForeignKey(User, verbose_name='Автор')
    create_date = models.DateTimeField(auto_now_add=True, verbose_name='Дата создания')
    class Meta:
        verbose_name='комментарий'
        verbose_name_plural='Комментарии'
    def __str__(self):
        return self.content
class Profile(models.Model):
    user = models.ForeignKey(User, related_name='profile', verbose_name='Имя пользователя')
    class Meta:
        verbose_name='профиль'
        verbose_name_plural='Профиль'
    def __str__(self):
        return self.user.get_full_name()

Ошибка возникает когда я перехожу по этой маске
url(r'^blog/category/([a-zA-Z0-9]+)?/$', category),
Ругается на это
posts = Post.objects.get(category=cat)
перехожу по ссылке вида /blog/category/neydachka/
'neydachka' это сожержимое category.name

Помогите разобраться пожалуйста, замучился уже

GitHub https://github.com/iamcodebryant/VFBWL



Мы люди в черном. Мы капитаны… мата, шансона, блинов и сметаны

Отредактировано Code_Bryant (Фев. 22, 2014 20:49:16)

Офлайн

#2 Фев. 22, 2014 20:53:59

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  19  -
Профиль   Адрес электронной почты  

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

def category(request, cat):
    print type(cat)
    posts = Post.objects.get(category__name=cat)
    return render_to_response('Blog/category.html', {'posts': posts})
Обычно то что вы называете name обозначают slug

field-lookups

Отредактировано PanovSergey (Фев. 22, 2014 20:56:25)

Офлайн

#3 Фев. 22, 2014 21:02:57

Code_Bryant
Зарегистрирован: 2014-02-22
Сообщения: 7
Репутация: +  1  -
Профиль  

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

Спасибо за информацию, но теперь ругается “'Post' object is not iterable” на это

{% for post in posts %}



Мы люди в черном. Мы капитаны… мата, шансона, блинов и сметаны

Отредактировано Code_Bryant (Фев. 22, 2014 21:09:52)

Офлайн

#4 Фев. 22, 2014 21:12:12

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  19  -
Профиль   Адрес электронной почты  

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

Code_Bryant
Спасибо за информацию. А для чего эта строка?
Это просто print чтобы вы поняли что cat это строка, а не Category.

Прочитайте сначала это

Это азы, а то будете через строчку спрашивать.

Офлайн

#5 Фев. 22, 2014 21:16:43

Code_Bryant
Зарегистрирован: 2014-02-22
Сообщения: 7
Репутация: +  1  -
Профиль  

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

Спасибо. Сглупил. Я знал, что это строка, но пока удалил вы уже прочитали Мне просто нужно что бы posts содержал в себе только посты с category__name='neydachka' грубо говоря.
Еще раз благодарочка. Буду изучать.



Мы люди в черном. Мы капитаны… мата, шансона, блинов и сметаны

Отредактировано Code_Bryant (Фев. 22, 2014 21:17:03)

Офлайн

#6 Фев. 22, 2014 21:24:25

Code_Bryant
Зарегистрирован: 2014-02-22
Сообщения: 7
Репутация: +  1  -
Профиль  

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

Ура! Спасибо, еще раз, огромное вам. Как говорят “дай человеку рыбу и он проживет один день, научи его ловить рыбу и он проживет всю жизнь”. Решил проблему. Плюсую в карму

def category(request, cat):
    posts = Post.objects.all().filter(category__name=cat)
    return render_to_response('Blog/category.html', {'posts': posts})



Мы люди в черном. Мы капитаны… мата, шансона, блинов и сметаны

Офлайн

#7 Фев. 22, 2014 21:26:21

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  19  -
Профиль   Адрес электронной почты  

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

Code_Bryant
Ура! Спасибо, еще раз, огромное вам. Как говорят “дай человеку рыбу и он проживет один день, научи его ловить рыбу и он проживет всю жизнь”. Решил проблему. Плюсую в карму
У вас правильный подход

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version