파이썬+ 장고 웹 페이지 만들기 (wecode 수업 전 예습 )

목차

  1. 관리자 페이지에서 처 포스트 작성하기.
    9 URL 설정 및 포스트 목록 페이지 만들기

8. 관리자 페이지에서 처 포스트 작성하기.

(venv) λ python manage.py runserver

admin.py에 Post 모델 추가하기.
blog/admin.py 파일을 열고 두 줄만 추가하여 관리자 페이지에 Post 모델을 등로합니다.

blog/admin.py

from django.contrib import admin
from .models import Post

admin.site.register(Post)

http://127.0.0.1:8000/admin/

  • 8-2 새로운 포스트 생성하기.

posts > add > ADD POST

임으로 포스트를 2개 생성하였다.

models.py에 Post 모델을 정의하고 admin.py코드에 두 줄을 추가한 것만으로 관리자 페이지에 새로운 포스트를 작성할 수 있는 기능이 추가되었습니다.

  • 8-3 포스트 개선하기.

blog/models.py에 클래스 2줄 추가.

def __str__(self):
      return f'[{self.pk}]{self.title}'

pk는 각 레코드의 고유값

  • 8-4 특징 지역 기준으로 작성 시간 설정하기.

django_py/settings.py
TIME_ZONE = 'UTC' 을 Asia/Seoul
Use_TZ 는False

Time이 한국 기준으로 바뀌어 표준시 시간인 9시간에서 바뀌었다.

  • 8-4 자동으로 작성 시각과 수정 시각 저장하기.

포스터를 작성하면 자동으로 작성 시각을 저장되도록 설정.

blog/models.py 에 추가해준다

    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

수정했으니 makemigrations으로 장고에게 알려주고, migrate로 데이터베이스에 반영해야 한다.

python manage.py makemigrations
python manage.py migrate
python manage.py runserver

시간란이 사라졌다!

COMMIT 모델을 생성하고 시간 설정하기.

(venv) λ git add .

C:\github\hong_tae (main -> origin)
(venv) λ git commit -m "Post 모델을 생성하고 시간 설정하기"
[main 57255b7] Post 모델을 생성하고 시간 설정하기
 5 files changed, 70 insertions(+), 3 deletions(-)
 create mode 100644 blog/migrations/0001_initial.py
 create mode 100644 blog/migrations/0002_auto_20210223_1801.py

C:\github\hong_tae (main -> origin)
(venv) λ git push
Username for 'https://github.com': gusxoqkqh1
                                             Password for 'https://[email protected]':
To https://github.com/gusxoqkqh1/hong_tae.git

9. URL 설정 및 포스트 목록 페이지 만들기

  • 9-1 블로그 페이지 URL로 접속하기

웹 페이지에 http://127.0.0.1:8000/blog 치면 404 오류가 난다

page not found 가 뜬다 거기에는 admin/에 해당하는 내용밖에 없다고 불평고 있다.

django.prj/urls.py로 가보자

path('blog/', include('blog.urls')) 추가
from django.contrib import admin
from django.urls import include,path    
# from django.urls import path

urlpatterns = [
    path('blog/', include('blog.urls')),
    path('admin/', admin.site.urls),
]

아직 Blog 앱 폴더에는 urls.py가 없다. 새로 urls.py를 만들고 내용 추가.

from django.urls import path

from . import views # 현재 폴더에 있는 views.py를 사용할 수 있게 가져와라 

urlpatterns = [

    path('', views.index),
    ]
  • 9-2 blog/views.py에 index() 함수 정의

blog/views.py

from django.shortcuts import render

def index(request):
    return render( # ranger() 함수를 사용해 템플릿 폴더에서 blog 폴더의 index.html 파일을 찾아 방문자에게 보여줌
        request,
        'blog/index.html',
    )

doesNotExist at /blog/
템플릿을 찾을 수 없다는 오류가 나온다.
템플릿에 아직 index.html을 생성하지 않았기 떄문입니다.

  • 9-3 템플릿 파일 만들기

<주의가 필요>
blog > {templates > blog > index.html]

templates , blog 디렉토리 추가 후 그 밑에 index.html 파일 추가

간단한 인덱스.html 문서 작성

<!doctype html>

<html lang="ko">
<head>

    <meta charset="utf-8">
    <title>Blog</title>

</head>
<body>

<h1>Blog</h1>

</body>

</html>

<주의>

새로고침 이후 사이트를 연결 할 수 없음 이라는 메시지가 나온다면, 아직 장고가 새로운 템플릿 폴더를 인지 못했을 확률이 있으니 Ctrl+ C해서 서버를 종료 하고 다시 해보자

blog/views.py

from django.shortcuts import render
from .models import Post



def index(request):
    posts = Post.objects.all()


    return render(
        request,
        'blog/index.html',
        {
            'posts' : posts,

        }
    )
# Create your views here.

좋은 웹페이지 즐겨찾기