프로그래밍 언어/Django

[Django로 Pinterest 따라만들기]

qwerty123 2024. 1. 11. 13:25

장고의 기본 개념

Django는 MVT(Model, View, Template)패턴이 있다.

  • Model : DB와 Django 객체간의 매핑을 해주는 요소이다. ORM(Object Relational Mapping)에서의 엔티티 개념이라고 보면 된다.
  • View : Server에서 처리하는 Service단이다. 인증, 검증, 로직진행, DB 저장 등의 비즈니스 로직을 처리하는 영역이다.
  • Template : 사용자에게 표시해주는 UI단이다. 정적인 HTML, CSS 대신 특정 문법을 사용하여 동적인 데이터 매핑 및 기능이 작동하도록 해준다.


 

cd /Users/heoyeonjae/pycharmprojects/test123/pragmatic # 경로확인

code .  # vscode 실행

source venv/bin/activate # 가상환경 활성화
더보기

** 에러발생....

문제 : 깃 관련 연결이슈 (non-fast-forward 오류 발생)

해결 : git push -u origin main --force

 

-> 

 

 

1. Pinterest 서비스를 만들기 위해서 Account, Article, Project, Comment와 같은 모듈들을 만들 것이다.

 

Accountapp 생성

python manage.py startapp accountapp

# 이렇게 하면 기본적으로 필요한 admin, model, view등을 만들어준다.

 

 

이후 accountapp을 메인이 되는 pragmatic/settings.py에 추가해주어야 app끼리 연결이 된다.

settings.py의 INSTALLED_APPS에 'accountapp'을 추가해주자.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'accountapp',
]

 

account/views.py 작성

# account의 view.py에 테스트용으로 HttpResponse를 돌려주는 기능을 넣는다.
def hello_world(request):
    return HttpResponse('Hello world!')

 

URL 연결: Routing

어떤 url로 요청이 들어왔을 때 account.app의 기능을 실행할지를 메인 프로젝트인 pragmatic에서 정의한다.

pragmatic/urls.py에 'account/' 패턴을 추가한다.

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

#  path 뒤에는 반드시 슬래시(/)를 넣어주어야 한다. 
# include는 import 해오는 패키지이며, 'accountapp.urls'로 두어 
# accountapp 내부의 urls.py 내부에서 정의할 url에 접근 시 처리되도록 설정해준다.

 

accountapp/urls.py를 생성하고, 아래 코드를 작성한다.

accounts/hello_world에 접근하면 view에서 정의한 hello_world 메서드로 요청이 가서 처리되는 구조이다.

from django.urls import path

from accountapp.views import hello_world

app_name = 'accountapp'

# urlpatterns의 path의 인자는 차례대로 경로, 메서드, 이름이다.
urlpatterns = [
    path('hello_world/', hello_world, name='hello_world')
]

 

app_name을 다시 지정한 것은 접근의 편의성을 위한 것이다.

원래 해당 url로 접근하기 위해서는 '127.0.0.1:8080/accounts/hello_world'로 접근해야되지만,

app_name을 지정해주면 나중에 accountapp:hello_world라고만 작성해도 접근이 가능해진다.

 

python manage.py runserver

장고 실행후, localhost:8000/account/hello_world로 접근하기