작정하고 Django (40) - Project app 구현

김의찬·2023년 6월 27일

작정하고 Django !

목록 보기
41/45

Projectapp 구현

1.python manage.py startapp projectapp 을 통한 projectapp 생성

  1. main setting 에서 해당 앱을 사용한다고 명시.
    urls.py에서 path를 등록한다.

  2. 해당 projectapp에서 urls.py 파일을 생성하고 forms.py도 생성한다.

  3. 해당 projectapp models.py에서 모델을 생성한다.

  4. python manage.py makemigrations python manage.py migrate 를 통해서 DB연동을 수행한다.

  5. forms.py 와 views.py 및 각각의 코드들을 이용하여 코드들을 작성한다.

각종 코드들

views.py에는 Create, Detail, Listview 총 3가지의 view를 작성하여 수행한다.

from django.contrib.auth.decorators import login_required
from django.shortcuts import render
from django.urls import reverse
from django.utils.decorators import method_decorator
from django.views.generic import CreateView, DetailView, ListView


from projectapp.forms import ProjectCreationForm
from projectapp.models import Project


# Create your views here.
@method_decorator(login_required, 'get')
@method_decorator(login_required, 'post')
class ProjectCreateView(CreateView):
    model = Project
    form_class = ProjectCreationForm
    template_name = 'projectapp/create.html'

    def get_success_url(self):
        return reverse('projectapp:detail', kwargs={'pk': self.object.pk})

class ProjectDetailView(DetailView):
    model = Project
    context_object_name = 'target_project'
    template_name = 'projectapp/detail.html'

class ProjectListView(ListView):
    model = Project
    context_object_name = 'project_list'
    template_name = 'projectapp/list.html'
    paginate_by = 25

models.py에는 Project라는 모델을 생성하고 이 때 모델에는
image, title, description, created_at 속성 4가지를 설정한다.

from django.db import models

# Create your models here.

class Project(models.Model):
    image = models.ImageField(upload_to='project/', null=True)
    title = models.CharField(max_length=20, null=False)
    description = models.CharField(max_length=200, null=True)
    created_at = models.DateTimeField(auto_now=True)

forms.py에는 ProjectCreationForm 을 사용한다.

from django.forms import ModelForm

from projectapp.models import Project


class ProjectCreationForm(ModelForm):
    class Meta:
        model = Project
        fields = ['image', 'title', 'description']

또한 view에 사용되는 html 파일들을 생성하는데 이때 projectapp 에서 templates디렉토리, 거기서 또 projectapp이라는 디렉토리 안에 html 파일들을 생성한다.

crate.html은 project를 생성하는 부분을 담당하는 html 파일이고
detail.html은 생성한 project를 자세히 보는 담당,
list.html 은 존재하는 project를 확인할 수 있는 담당이다

이 3개의 html 파일은 base.html을 기반으로 하기 때문에

{% extends 'base.html' %} 을 코드 맨 앞에 명시해주어야한다.

profile
김의찬입니다

0개의 댓글