게시물 세부정보:

Django - 기존 프로젝트에 Application 추가 작업

Application 추가 작업 순서

1. 어플리케이션 추가

        python manage.py startapp 앱이름

여기서는 blog 라는 이름으로 앱을 추가합니다.

따라서 python manage.py startapp blog 가 됩니다.

 

        

2. settings.py에 앱 등록

        INSTALLED_APPS = [

               '앱이름',

                ...,

        ]

        

    3. template 만들어 주기

생성된 앱 플더에 templaes 폴더를 만들고 그 하단에 생성한 앱 이름으로 폴더를 만든다.

 

        templates/앱이름

   

    4. Model 정의 

*from django.db import models을 상속받아 사용해야 함.

예시)

from django.db import models
from django.utils import timezone
from django.urls import reverse
from django.contrib.auth.models import User
from tinymce import HTMLField
from taggit.managers import TaggableManager


# Create your models here.
class blogPost(models.Model):
    author = models.ForeignKey(User,on_delete=models.CASCADE)
    title = models.CharField(max_length=130)
    text = HTMLField()
    tags = TaggableManager()
    #text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)

    def get_absolute_url(self):
        return reverse("blogs:post_detail", kwargs={"pk": self.pk})
    def __str__(self):
        return self.title

    5. admin.py에 모듈 추가

예시

from django.contrib import admin
from .models import blogPost

admin.site.register(blogPost)

    6. db migration 작업 .
먼저 make migrations 다음에 물리 db 생성 작업을 한다.

터미날에서 다음의 순서로 명령 수행

python manage.py makemigrations

python manage.py migrate

 

   

    7. 프로젝트 수준의 urls.py 에서 (settings.py가 있는곳) 앱 경로 등록

예)

urlpatterns = [
    path('', include('blog.urls',namespace='blogs')),
   

] 

   

    8. views.py에서 핸들러 함수 구현(요청처리, 모델작업)

예시)

from blog.models import *

class PostDetailView(DetailView):
    context_object_name = 'post'
    template_name = 'blog/post_detail.html'
    model = blogPost

   

    9. 화면이 필요한 경우, 해당 template 작업

위의 예시의 경우 blog앱의 templates 폴더 하단의 blog폴더에서 post_detail.html 을 작업 해 줌.

    10. 앱 수준의 url 작업 

예시)

from django.urls import path
from blog.views import PostDetailView

app_name = 'blogs'

urlpatterns = [

    path('blog/<int:pk>/',PostDetailView.as_view(),name='post_detail'),

]

 

 

 

 

목록으로