카테고리의 slug를 수정하면 301에러가 발생합니다.
444
작성한 질문수 15
21:04에서처럼
def create_category(name='life', description=''):
....
category.slug = category.name.replace(' ', '-').replace('/', '')
category.save()
....
를 했더니 테스트에서 301 에러가 발생합니다.
Traceback (most recent call last):
File "C:\Users\msra9\python_projects\django_my_website\blog\tests.py", line 200, in test_post_list_by_category
self.assertEqual(response.status_code, 200)
AssertionError: 301 != 200
cmder에서는 에러 설명이 이것뿐이라서 뭐가 문제인건지 모르겠습니다..
답변 4
1
혹시, 저에게 보여주지 않은 modes.py의 Category 클래스에 get_absolute_url에서 슬래시를 마지막에 빠뜨리시지 않았나요?
한참을 고민해봤는데, 그게 문제이지 않을까 싶네요?
def get_absolute_url(self):
return '/blog/category/{}/'.format(self.slug)
라고 작성해야 하는데
def get_absolute_url(self):
return '/blog/category/{}'.format(self.slug)
라고 만드신게 아닌가 싶어요.
0
테스트코드는
def test_post_list_by_category(self):
# 카테고리를 생성한다.
category_politics = create_category(name='정치/사회')
self.assertGreater(Category.objects.count(), 0)
# 포스트를 생성한다.
post_000 = create_post(
title='the first post',
content='hello world',
author=self.author_000
)
post_001 = create_post(
title='the second post',
content='goodbye world',
author=self.author_000,
category=category_politics
)
self.assertGreater(Post.objects.count(), 0)
# /blog/category/slug/에 접근을 시도하고 성공여부를 확인한다.
response = self.client.get(category_politics.get_absolute_url())
self.assertEqual(response.status_code, 200)
soup = BeautifulSoup(response.content, 'html.parser')
# 페이지 타이틀 태그를 확인한다.
self.assertEqual(soup.title.text, 'Blog - {}'.format(category_politics.name))
# 네비게이션에 Blog, About Me가 있는지 확인한다.
self.check_navbar(soup)
# 미분류 뱃지는 없고, 정치/사회 뱃지만 있는지 확인한다.
main_div = soup.body.find('div', id='main_div')
self.assertNotIn('미분류', main_div.text)
self.assertIn(category_politics.name, main_div.text)
views.py는
class PostList(ListView):
model = Post
def get_queryset(self):
return Post.objects.order_by('-created')
def get_context_data(self, *, object_list=None, **kwargs):
context = super(PostList, self).get_context_data(**kwargs)
context['category_list'] = Category.objects.all()
context['posts_without_category'] = Post.objects.filter(category=None).count()
return context
class PostDetail(DetailView):
model = Post
def get_context_data(self, *, object_list=None, **kwargs):
context = super(PostDetail, self).get_context_data(**kwargs)
context['category_list'] = Category.objects.all()
context['posts_without_category'] = Post.objects.filter(category=None).count()
return context
class PostListByCategory(PostList):
def get_queryset(self):
slug = self.kwargs['slug']
category = Category.objects.get(slug=slug)
return Post.objects.filter(category=category).order_by('-created')
blog/urls.py는
from django.urls import path
from . import views
urlpatterns = [
path('category/<str:slug>/', views.PostListByCategory.as_view()),
path('<int:pk>/', views.PostDetail.as_view()),
path('', views.PostList.as_view())
]
입니다.
후속 강의
0
389
1
완성했습니다. 감사합니다
0
318
2
오늘 vps 에 domain 을 지정해주고 아직 활성화되지 않았는데
0
295
1
test 결과 두 가지 error 가 발생했습니다. 뭐가 잘못된 건지 도저히 모르겠습니다.
0
418
1
accounts/login 이 존재하지 않는다고 나옵니다
0
266
2
코드 질문입니다
0
247
1
포스트에 markdown을 사용해서 이미지를 추가할때
0
310
1
New Post 관련 질문드립니다.
0
178
1
이번 영상부터 각 포스트에 프리뷰 사진이 달라지셔서 질문 드립니다.
0
333
1
base 작업한 후 Category가 블로그 하단으로 내려갔습니다.
0
252
1
혹시 소스코드 전체가 담긴 주소를 좀 알 수 있을까요?
0
264
1
9분 경 테스트에서 Assretion Error가 발생합니다.
0
233
1
파이참 초기 설치 후 설정 관련해서 git에 항상 add되는 옵션을 체크했습니다.
0
344
3
F12를 눌러 console 창에서 오류를 확인할때 몇번째 줄인지 나오지 않습니다.
0
395
1
post view도 delete하려는데 막혀서 ㅠㅠ
0
195
1
"GET / HTTP/1.1" 400 143 그리고 "GET / HTTP/1.1" 404 2031
0
3303
3
연결이 안됩니다
0
503
8
서버에 연결하고 나면 그 후에 Cmder가 작동이 안되요
0
377
2
서버에 배포후 어드민계정
0
589
2
안녕하세요! 실서버에 올린 sqlite3의 데이터를 직접 확인하려면 어찌하나요?
0
2038
3
gitignore안먹히는현상
0
292
1
cmder 종료시 서버도 같이 종료됩니다.
0
219
1
' python manage.py makemigration blog ' 명령어 에러
0
587
2
python manage.py makemigrations 를 했을 때 오류가 납니다.
0
557
2





