Python

Python Django를 이용한 블로그 만들기 -2

Baetab 2023. 4. 20. 12:10

어제 밤에 프로젝트 생성 ->  admin 생성까지 완료

https://devofbt.tistory.com/entry/Python-Django-를-이용한-블로그-만들기-1

 

 Django 앱 만들기 , 등록

프로젝트내에 여러개의 앱이 생성이 가능하다 나는 blog 라는 앱을 만든다

python manage.py startapp blog

blog 앱이 생성되어있고 하위 파일들

앱을 만들었으면 프로젝트 폴더내의 setting.py 에 등록해주어야 한다.

setting.py 를 열어어서 아래 부분에 내가 만든 앱을 추가해준다

setting.py 에 blog 앱을 추가 하였

 

blog 앱 접속하기 위해 urls.py 수정

 

앱추가가 되었으면 http:// 내 주소 /blog 로 접속이 가능하게 수정 해 주어야 한다

프로젝트 내에 urls.py 폴더를 열어 다음과 같이 path 를 추가해준다

from django.contrib import admin
from django.urls import path, include

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

include 가 import 되어있는지 확인 해주어야 한다.

 

정상적인 작동을 위해선 blog 앱 내에서도 urls.py가 있어야한다

blog 앱 폴더에 urls.py 를 추가 해주고 다음과 같이 입력해준다

from django.urls import path
from . import views
from .models import Post

urlpatterns = [
    path("", views.Post_List.as_view()),
]

사용자가 /blog 로 접속했을때 여기서 어떻게 처리할껀지 적어준 것인데 아직 models에 기능도 구현도 되지 않았고

views 도 아직 설정하지 않았다

 

models.py 에 글쓰기 기능 구현

blog 폴더내 models.py 에 기능을 구현 한다

from django.db import models
from django.contrib.auth.models import User

class Post(models.Model):
    title = models.CharField(max_length=30) //제목 최대길이 30자
    image = models.ImageField(blank=True)  //이미지 필드
    content = models.TextField() 			//텍스트 필드
    author = models.ForeignKey(User, on_delete=models.CASCADE) //user삭제시 post 삭제
    created_date = models.DateTimeField(auto_now_add=True) //글 작성시 자동으로 시간저장

 

제목 , 내용 , 작성자 , 작성날짜로 구성되었다.

 

views.py 수정하기

models.py 에 구현된 Post 클래스를 어떻게 사용할지 views.py에 작성해주어야 한다

from django.shortcuts import render
from .models import Post
from django.views.generic import ListView

class Post_List(ListView):
    model = Post

 

/admin 페이지에 Post 기능 추가

blog 앱 폴더내 admin.py 파일 수정

from django.contrib import admin
from .models import Post

admin.site.register(Post)

models 에 구현된 Post 기능을 등록시켜줌

 

models 를 수정하였으면 서버 실행하기전 migrate 를 해줘야 한다

아래 코드를 순서대로 입력해 준다.

python manage.py makemigrations
python manage.py migrate

runserver 를해서 /admin 에 접속해본다

서버를 구동시키려니 뭔가 오류가 뜬다

아마도 models.py 에 넣은 imagefield 를 사용하려면 pillow 라는걸 설치해줘야 하나보다

crtl + c 로 서버 종료후 pip install pillow 해서 설치해서 다시 실행시켜보니 정상적으로 실행된다

http://127.0.0.1:8000/admin/ 접속

BLOG 에 정상적으로 Posts 라는 메뉴가 추가 된 것이 보인다 post  +Add 를 눌러 들어가서 보면

구현한 기능이 들어가있다.

 

3편에서 계속