Q&A
책을 따라하다가 막히는 부분이 있나요?
질문을 남겨주세요.
하지만, 책을 끝까지 읽고 나면 이 페이지도 만드실 수 있을거에요.
안녕하세요.. 저 좀 도와주세요..
2 years, 7 months ago
id746011from django.views.generic import ListView, DetailView
from .models import Post
class PostList(ListView):
model = Post
ordering = '-pk'
class PostDetail(DetailView):
model = Post
def index(request):
posts = Post.objects.all().order_by('-pk')
return render(
request,
'blog/index.html',
{
'posts': posts,
}
)
def single_post_page(request,pk):
post = Post.objects.get(pk=pk)
return render(
request,
'blog/single_post_page.html',
{
'post': post,
}
)
views.py
from django.test import TestCase, Client
from bs4 import BeautifulSoup
from .models import Post
class TestView(TestCase):
def setUp(self):
self.client = Client()
def test_post_detail(self):
# 0.Post가 하나 있다.
post_001 = Post.objects.create(
title='첫번째 포스트입니다.',
content='Hello World. We are the world.',
)
# 1.1 그 포스트의 url은 'blog/1/' 이다.
self.assertEqual(post_001.get_absolute_url(), '/blog/1/')
# 1. 첫 번째 post의 detail 페이지 테스트
# 1.2 첫 번째 post url로 접근하면 정상적으로 작동한다. (status code: 200)
response = self.client.get(post_001.get_absolute_url())
self.assertEqual(response.status_code, 200)
soup = BeautifulSoup(response.content, 'html.parser')
# 1.3 post_list 페이지와 똑같은 네비게이션 바가 있다.
navbar = soup.nav # beautifulsoup를 이용하면 간단히 페이지의 태그 요소에 접근이 가능합니다.
self.assertIn('Blog', navbar.text)
self.assertIn('About Me', navbar.text)
# 1.4 첫 번째 post의 title이 브라우저 탭에 표기되는 페이지 title에 있다.
self.assertIn(post_001.title, soup.title.text)
# 1.5 첫 번째 post의 title이 post-area에 있다.
main_area = soup.find('div', id='main-area')
post_area = main_area.find('div', id='post-area')
self.assertIn(post_001.title, post_area.text)
# 1.6 첫 번째 post의 작성자(author)가 post-area에 있다.
# 아직 작성 불가
# 1.7 첫 번째 post의 content가 post-area에 있다.
self.assertIn(post_001.content, post_area.text)
tests.py
post_detail파일입니다.. (저번 navbar.text에 질문을 드렸는데 뭐가 문제지 정확히 알려 주실 수 있나요..?)
C:\github\website-practice\mysite(main -> origin)
(venv) λ python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
March 29, 2022 - 13:36:16
Django version 4.0.3, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
Exception in thread django-main-thread:
Traceback (most recent call last):
File "C:\github\website-practice\venv\lib\site-packages\django\core\servers\basehttp.py", line 47, in get_internal_wsgi_application
return import_string(app_path)
File "C:\github\website-practice\venv\lib\site-packages\django\utils\module_loading.py", line 30, in import_string
return cached_import(module_path, class_name)
File "C:\github\website-practice\venv\lib\site-packages\django\utils\module_loading.py", line 15, in cached_import
import_module(module_path)
File "C:\Users\LG\AppData\Local\Programs\Python\Python39\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'mysite.wsgi'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\LG\AppData\Local\Programs\Python\Python39\lib\threading.py", line 973, in _bootstrap_inner
self.run()
File "C:\Users\LG\AppData\Local\Programs\Python\Python39\lib\threading.py", line 910, in run
self._target(*self._args, **self._kwargs)
File "C:\github\website-practice\venv\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper
fn(*args, **kwargs)
File "C:\github\website-practice\venv\lib\site-packages\django\core\management\commands\runserver.py", line 157, in inner_run
handler = self.get_handler(*args, **options)
File "C:\github\website-practice\venv\lib\site-packages\django\contrib\staticfiles\management\commands\runserver.py", line 31, in get_handler
handler = super().get_handler(*args, **options)
File "C:\github\website-practice\venv\lib\site-packages\django\core\management\commands\runserver.py", line 78, in get_handler
return get_internal_wsgi_application()
File "C:\github\website-practice\venv\lib\site-packages\django\core\servers\basehttp.py", line 49, in get_internal_wsgi_application
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: WSGI application 'mysite.wsgi.application' could not be loaded; Error importing module.
"""
WSGI config for mysite project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/4.0/howto/deployment/wsgi/
"""
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
application = get_wsgi_application()
그리고 wsgi에서 오류가 뜹니다.. 파일도 맞는 위치에 있고.. 코드도 수정한 적이 없는데 뭐가 문제인지 아시나요...?
from django.db import models
class Post:
pass
그리고 models.py 이 부분 수정하다가 pycharm show quick fixes 기능으로 수정하니까 from django.db import models 밑에 저 코드가 생겼는데 이건 그냥 놔둬도 되나요..?
목록보기
sungyong 2 years, 7 months ago
어디서부터 엄청 꼬이기 시작한 것 같은데요.
일단 asgi.py와 wsgi.py가 왜 프로젝트 폴더에 있는지 모르겠습니다.
애초에 django-admin startproject mysite . 으로 프로젝트를 시작했는지 궁금합니다. 지금 프로젝트 폴더가 있고, 그 아래 프로젝트 파일이 또 있는 것 같아보이거든요.
가능하시다면 프로젝트 리포지토리를 공유해주시겠어요?
Updated: March 30, 2022, 10:52 p.m.
id746011 2 years, 7 months ago
깃허브 프로젝트 리포지토리 공유하는 방법 좀 알려주세요.. 어떻게 하나요..?
Updated: March 31, 2022, 2:42 p.m.
sungyong 2 years, 7 months ago
https://afsdzvcx123.tistory.com/entry/%EA%B9%83%ED%97%88%EB%B8%8C-GitHub-%EA%B9%83%ED%97%88%EB%B8%8C-Collaborator-%EC%B6%94%EA%B0%80%ED%95%98%EA%B8%B0
참고하세요.
그런데 애초에 프로젝트 생성 단계부터 뭔가 꼬인 것 같은데요..
Updated: March 31, 2022, 9:57 p.m.
Leave a Comment: