Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
blackhawkjkee
0 / 0 / 0
Регистрация: 31.08.2015
Сообщений: 21
1

Ошибка 'function' object has no attribute 'id'

31.03.2019, 20:05. Просмотров 1334. Ответов 6
Метки нет (Все метки)

Добрый вечер. Пытаюсь выполнить лабораторные работы по методичке, однако либо что-то упустил, либо в методичке косяк.
По заданию необходимо создать собственную форму для написания новой статьи. После введения названия статьи и ее содержания выдает ошибку:
Python
1
2
3
4
5
6
Exception Type: AttributeError
Exception Value:    
'function' object has no attribute 'id'
Exception Location: C:\PythonLabs\lab5\blog\articles\views.py in create_post, line 32
Python Executable:  C:\Python27\python.exe
Python Version: 2.7.6
Так выглядит urls.py:
Python
1
2
3
4
5
6
7
8
9
10
11
from django.conf.urls import patterns, include, url
 
from django.contrib import admin
admin.autodiscover()
 
urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', 'articles.views.archive', name='archive'),
    url(r'^article/(?P<article_id>\d+)$', 'articles.views.get_article', name='get_article'),
    url(r'^article/new/', 'articles.views.create_post', name='article_new')
)
Так выглядит views.py:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# -*- coding: cp1251 -*-
from models import Article
from django.shortcuts import render
from django.shortcuts import redirect
 
def archive(request):
    return render(request, 'archive.html', {"posts":
Article.objects.all()})
 
def article(request):
    return render(request, 'article.html', {"posts":
Article.objects.all()})
 
from django.http import Http404
 
def get_article(request, article_id):
    try:
        post = Article.objects.get(id=article_id)
        return render(request, 'article.html', {"post": post})
    except Article.DoesNotExist:
        raise Http404
 
def create_post(request):
    if not request.user.is_anonymous():
        if request.method == "POST":
            form = {
                'text': request.POST["text"],
                'title': request.POST["title"]
            }
            if form["text"] and form["title"]:
                Article.objects.create(text=form["text"], title=form["title"], author=request.user)
                return redirect('get_article', article_id=article.id)
            else:
                form['errors'] = u"Не все поля заполнены"
                return render(request, 'create_post.html', {'form': form})
        else:
            return render(request, 'create_post.html', {})
    else:
        raise Http404
Методичку с описанием задания приложил ниже, начинается с 38 страницы.
0
Вложения
Тип файла: pdf 2017_Net_Tech_ZF_09_03_02.pdf (914.9 Кб, 1 просмотров)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2019, 20:05
Ответы с готовыми решениями:

Ошибка - AttributeError: 'function' object has no attribute 'as_view'
Друзья, помогите разобраться с ошибкой, что делаю не так? Класс для создания новой записи, при...

AttributeError: 'function' object has no attribute 'randint'
У меня не работает модуль рандома Хостинг: pythonanywhere.com Скрин:

AttributeError: 'function' object has no attribute
class player: def resources(self): credits = 22200 print(player.resources.credits) ...

AttributeError: 'function' object has no attribute 'x' - что это?
Вот моя функция для рисования треугольника, но когда я пытаюсь запустить её, мне выдаётся...

6
m0nte-cr1st0
867 / 451 / 191
Регистрация: 15.01.2019
Сообщений: 1,763
Записей в блоге: 1
31.03.2019, 20:43 2
blackhawkjkee, всё верно, у функции не может быть id.
Где Ваши модели?
0
blackhawkjkee
0 / 0 / 0
Регистрация: 31.08.2015
Сообщений: 21
31.03.2019, 20:52  [ТС] 3
models.py:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from django.db import models
from django.contrib.auth.models import User
 
class Article(models.Model):
    title = models.CharField(max_length=200)
    author = models.ForeignKey(User)
    text = models.TextField()
    created_date = models.DateField(auto_now_add=True)
    
    def __unicode__(self):
        return "%s: %s" % (self.author.username, self.title)
 
    def get_excerpt(self):
        return self.text[:140] + "..." if len(self.text) > 140 else self.text
0
netBool
317 / 298 / 171
Регистрация: 16.11.2010
Сообщений: 1,067
Записей в блоге: 9
Завершенные тесты: 5
31.03.2019, 21:59 4
Цитата Сообщение от blackhawkjkee Посмотреть сообщение
'function' object has no attribute 'id'
Все верно. Вы задавались вопросом, что у вас такое article?


Цитата Сообщение от m0nte-cr1st0 Посмотреть сообщение
Где Ваши модели?
Да там и моделей не нужно, и так видно: он передает в качестве аргумента название функции article, объявленной в 10й строке. А по методе, скорее всего, надо было просто вернуть объект из create:

Python
1
2
                article = Article.objects.create(text=form["text"], title=form["title"], author=request.user)
                return redirect('get_article', article_id=article.id)
0
blackhawkjkee
0 / 0 / 0
Регистрация: 31.08.2015
Сообщений: 21
31.03.2019, 22:51  [ТС] 5
@netBool, так я в точности по методичке и делал. Там и код такой же. Все равно не понимаю что именно я должен передать.
0
blackhawkjkee
0 / 0 / 0
Регистрация: 31.08.2015
Сообщений: 21
01.04.2019, 02:14  [ТС] 6
Твою ж налево, я не ту методичку приложил к файлу. Дико извиняюсь, исправил.
0
Вложения
Тип файла: pdf Metodicheskie_ukazania_k_laboratornym_rabotam.pdf (1.62 Мб, 3 просмотров)
netBool
317 / 298 / 171
Регистрация: 16.11.2010
Сообщений: 1,067
Записей в блоге: 9
Завершенные тесты: 5
04.04.2019, 09:26 7
Цитата Сообщение от blackhawkjkee Посмотреть сообщение
так я в точности по методичке и делал
Значит в методичке ошибка. Изучайте джанго по первоисточникам, а не институтским суррогатам

Цитата Сообщение от blackhawkjkee Посмотреть сообщение
Все равно не понимаю что именно я должен передать.
Если без разъяснений, то тот код, который я привел выше, вставить вместо своего: в частности, заменить одну строчку с Article.objects.create на article = Article.objects.create, но без понимания далеко вы не уйдете
0
04.04.2019, 09:26
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2019, 09:26

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ошибка AttributeError (object has no attribute)
Уважаемые форумчане, подскажите, пожалуйста, в чём суть такой ошибки. Уже второй день бьюсь. Вроде...

Ошибка 'NoneType' object has no attribute 'auser'
Необходимо автоматически прикреплять имя автора к созданной им статье. В процессе создания...

Ошибка 'list' object has no attribute 'read'
Когда я начал писать свой код всё было хорошо но потом, когда я проверял, вылетела ошибка &quot;list...

Ошибка 'int' object has no attribute '__getitem__'
Доброго времени суток. Прошу подсказать куда копать, что бы исправить ошибку. Ell=ell();...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.