view on site 가 제대로 동작을 안합니다
392
작성한 질문수 6
테스트 포스트의 pk는 7이고 그거 하나 뺴고 다 지워둔 상태입니다.
127.0.0.1:8000/blog/7/ 로 들어가면 정상적으로 포스트가 나오는데 admin 페이지의 view on site 버튼을 누르면 127.0.0.1:8000/admin/r/7/7/ 로 들어가지고
페이지가 작동하지 않습니다.
127.0.0.1에서 잘못된 응답을 전송했습니다.
이런 창이 뜹니다..
그냥 패스하고 그 다음인 tests.py에서 get_absolute_url을 테스트하는 부분으로 넘어가니
self.assertEqual(Post.objects.get_absolute_url(), 'blog/{}'.format(post_000.pk))
self.assertEqual(Post.objects.get_absolute_url(), 'blog/{}'.format(post_000.pk))
AttributeError: 'Manager' object has no attribute 'get_absolute_url'
이런 메시지가 뜨면서 테스트도 실패합니다.
제가 get_absolute_url()함수를 잘못 만든걸까요?
models.py
from django.db import models
from django.contrib.auth.models import User
class Post(models.Model):
title = models.CharField(max_length=30)
content = models.TextField()
head_image = models.ImageField(upload_to='blog/%Y/%m/%d/', blank=True)
created = models.DateTimeField()
author = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return str(self.title) + ' :: ' + str(self.author)
def get_absolute_url(self):
return 'blog/{}/'.format(self.pk)
tests.py
from django.test import TestCase, Client
from bs4 import BeautifulSoup
from .models import Post
from django.utils import timezone
from django.contrib.auth.models import User
def create_post(title, content, author):
blog_post = Post.objects.create(
title = title,
content = content,
created = timezone.now(),
author = author,
)
return blog_post
class TestView(TestCase):
def setUp(self):
self.client = Client()
self.author_000 = User.objects.create(username='Smith', password='nopassword')
def test_post_list(self):
response = self.client.get('/blog/')
self.assertEqual(response.status_code, 200)
soup = BeautifulSoup(response.content, 'html.parser')
title = soup.title
self.assertEqual(title.text, 'blog')
navbar = soup.find('div', id='navbar')
self.assertIn('Blog', navbar.text)
self.assertIn('About Me', navbar.text)
self.assertEqual(Post.objects.count(), 0)
self.assertIn('아직 게시물이 없습니다', soup.body.text)
post_000 = create_post(
title = 'test post',
content = 'hello world',
author = self.author_000,
)
self.assertGreater(Post.objects.count(), 0)
response = self.client.get('/blog/')
self.assertEqual(response.status_code, 200)
soup = BeautifulSoup(response.content, 'html.parser')
self.assertNotIn('아직 게시물이 없습니다', soup.body.text)
def test_post_detail(self):
self.assertEqual(Post.objects.count(), 0)
post_000 = create_post(
title = 'test post',
content = 'hello world',
author = self.author_000,
)
self.assertGreater(Post.objects.count(), 0)
self.assertEqual(Post.objects.get_absolute_url(), 'blog/{}'.format(post_000.pk))
답변 1
0
models.py에서 get_absolute_url()은
return '/blog/{}/'.format(self.pk)가 되어야 합니다. 맨 앞에 슬래쉬를 빼놓으셨네요.
그리고 맨 마지막에 Post.objects.get_absolute_url() 이 아니라, post_000.get_absolute_url() 아닌가요?
후속 강의
0
390
1
완성했습니다. 감사합니다
0
321
2
오늘 vps 에 domain 을 지정해주고 아직 활성화되지 않았는데
0
299
1
test 결과 두 가지 error 가 발생했습니다. 뭐가 잘못된 건지 도저히 모르겠습니다.
0
421
1
accounts/login 이 존재하지 않는다고 나옵니다
0
269
2
코드 질문입니다
0
248
1
포스트에 markdown을 사용해서 이미지를 추가할때
0
311
1
New Post 관련 질문드립니다.
0
179
1
이번 영상부터 각 포스트에 프리뷰 사진이 달라지셔서 질문 드립니다.
0
334
1
base 작업한 후 Category가 블로그 하단으로 내려갔습니다.
0
254
1
혹시 소스코드 전체가 담긴 주소를 좀 알 수 있을까요?
0
265
1
9분 경 테스트에서 Assretion Error가 발생합니다.
0
235
1
파이참 초기 설치 후 설정 관련해서 git에 항상 add되는 옵션을 체크했습니다.
0
345
3
F12를 눌러 console 창에서 오류를 확인할때 몇번째 줄인지 나오지 않습니다.
0
396
1
post view도 delete하려는데 막혀서 ㅠㅠ
0
197
1
"GET / HTTP/1.1" 400 143 그리고 "GET / HTTP/1.1" 404 2031
0
3304
3
연결이 안됩니다
0
506
8
서버에 연결하고 나면 그 후에 Cmder가 작동이 안되요
0
378
2
서버에 배포후 어드민계정
0
589
2
안녕하세요! 실서버에 올린 sqlite3의 데이터를 직접 확인하려면 어찌하나요?
0
2039
3
gitignore안먹히는현상
0
292
1
cmder 종료시 서버도 같이 종료됩니다.
0
220
1
' python manage.py makemigration blog ' 명령어 에러
0
588
2
python manage.py makemigrations 를 했을 때 오류가 납니다.
0
560
2





