Djangogirls post-list 기본 구현

Djangogirls post list 기본 구현

post-list 브랜치 생성

git checkout -b post-list

blog 폴더에서 urls.py생성후 runserver

blog 폴더에서 new file 생성 -> urls.py

terminal -> python manage.py runserver
(실행이 이미 되고있으면 Ctrl+c로 멈췄다가
다시 runserver 명령어 입력)

그러면 아래의 문구로 시작하는 오류메시지를 찾아볼수 있음.
django.core.exceptions.ImproperlyConfigured

아까 만들어놨던 urls.py 안에 urlpatterns = [] 만들고 runserver확인

Django에서 처리 가능한 하나의 페이지를 만들 때


최소 구현

  • url (특정 페이지의 URL을 설정)
  • view (URL로 들어온 request를 처리하고 response를 돌려줄 함수)
urlpatterns의 정규표현식을 적용했을 경우

http://localhost:8000/
-> r'^$'

http://localhost:8000/admin/
->r'^admin/'

urlpatterns의 빈 리스트에 url(r'^$', ), 입력

views.py 파일 열기
from django.http import HttpResponse

def post_list(request):
	return HttpResponse('Post List입니다')입력

urlpatterns에 blog.views에 있는 post_list함수를 두 번째 인자로 전달.
# 임포트할때는 상대경로로 불러오는게 효율적임.
from .views import post_list
url(r'^$', post_list),

post_list_html 저장하기

  • html파일을 효율적으로 사용하기 위해 따로 저장하고 꺼내는게 일반적.
app -> templates 폴더 생성 -> blog 폴더 생성 
-> post_list.html 파일 생성 -> html:5[tab]으로 기본 내용 작성.
  • post_list에서 templates/blog/post_list.html파일의 내용을 읽어서

  • return해주는 HttpResponse에 전달

    import os
      
    from django.http import HttpResponse
      
    def post_list(request):
        """
        first/
            first_file.txt
            second/
                second_file.txt
                third/
                    module.py
                    fourth/
                        fourth_file.txt
      
        module.py에서
        0. 현재 경로
            os.path.abspath(__file__)
      
        1. second/ 폴더의 경로
            os.path.dirname(<현재경로>)
      
        1-1. second/ 폴더의 경로
            os.path.dirname(<현재경로>)
      
        2. second/second_file.txt의 경로
            os.path.join(<second폴더의 경로>, 'second_file.txt')
      
        3. fourth/ 폴더의 경로
            os.path.join(<현재경로>, 'fourth')
      
        4. fourth/fourth_file.txt의 경로
            os.path.join(<현재경로>, 'fourth', 'fourth_file.txt')
        """
      
    # dirname은 경로 위로 join은 경로 아래로
    # join은 한 번에 2단계정도까지 내려가는것도 가능
        cur_file_path = os.path.abspath(__file__)
        blog_dir = os.path.dirname(cur_file_path)
        app_dir = os.path.dirname(blog_dir)
        template_dir = os.path.join(app_dir, 'templates')
        post_list_template_path = os.path.join(template_dir, 'blog', 'post_list.html')
        html = open(post_list_template_path, 'rt').read()
      
      
        return HttpResponse('Post List')
    
  • 현재 경로가 어디인지 위치를 확인하려면 각 경로별로 프린트 해볼것

    • runserver를 돌린 상태에서 블로그 페이지를 새로고침하면 출력확인.

Reference

Djangogirls

Comments