코딩 개발일지

장고(Django 기본 틀 만들기 과정) 명령어 본문

AI 본 교육/AI 5주차

장고(Django 기본 틀 만들기 과정) 명령어

호기호 2023. 9. 4. 16:22

장고를 이용한 프로젝트를 처음 만들 때의 기본 틀 만들기 순서를 정리해 보겠음 (주관적 순서)

주의점 : 초보라서 틀릴 수 있음

 

1. VScode, github홈페이지 준비

2. VScode에서 README.md 만들어서 간단한 프로젝트 소개작성

3. git init 후 변경점이 있을 때마다 git add 와 git commit을 습관적으로 해주기. (생략)

4. github 에서 repository 생성 후 SSH주소 복사 후, git remote add origin SSH주소

5. git push origin main                                                        >>>>>>  main으로 repository 생성 완료 이후 팀원 초대

6. git switch -c 브랜치명                                                       >>>>>>  branch 바꿔주기

 

7. python -m venv venv                                                      >>>>>>  가상환경 생성

8. source venv/Scripts/Activate                                      >>>>>>  가상환경 들어가기 (TAB눌러서 완성)

9. 파일 .gitignore 생성 후, https://www.toptal.com/developers/gitignore 가서 필요한 부분 넣기

10. pip install django + 필요한거 install

11. pip list로 다 깔았는지 확인 후 requirements.txt 생성.

12. pip freeze > requirements.txt

 

13. django-admin startproject 프로젝트명 .                 >>>>>>  django 시작

14. python manage.py makemigrations                      >>>>>>  database 변경을 알려주는 명령어

15. python manage.py migrate                                        >>>>>>  database 적용

16. python manage.py createsuperuser                       >>>>>>  admin 계정 생성

 

까지 기본 틀 인 것 같다. 나는 이 과정동안 git commit을 언제했냐면,

1. README / 2. gitignore / 3. requirements / 4. django 시작 / 5. settings.py 약간 조정 / 6. database 생성

이렇게 했다. 너무 많이 했나..? (처음이라 모름ㅋㅋ 그냥 여기까지 한방에 commit 해도 될것 같기도 하고?)


앱(어플리케이션) 만들기

명령어 : python manage.py startapp 앱명

 

하나의 프로젝트는 여러개의 앱을 가짐. 앱마다 프로젝트에서 하나의 기능을 담당하는 느낌?

 

앱을 만들었으면, 자동으로 models.py가 생성됨

앱을 만들었으면, 무조건 templates 폴더를 만든다.

(보통 회원가입과 같은 user 앱을 가장 먼저 만듬)


models.py에서 이 앱의 model을 만드는게 첫 번째 순서 !!!

class를 이용해서 만든다.

class Todo(models.Model):
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    is_done = models.BooleanField(default=False)

이런식으로 만들어준다. 나는 Todo클래스로 만들어 줬음

TextField 와 같은 Field들은 장고 공식문서에서 뭐가 있는지 확인 가능하다. (필요한 것 구글링해서 쓰기)

 

그리고 admin.py에서 아래와 같이 class를 admin사이트 내에 추가해준다

admin.site.register(Todo)

원래 프로젝트의 urls에서 app과 getdata와 include를 통해 연결해주고, settings.py에도 todo추

    path('getdata/', views.getdata),
    path('todo/', include("todo.urls")),

views.py에도 getdata 추가

def getdata(request):
    print(request.POST.get('todo'))
    return HttpResponse('ok')

앱도 마찬가지로 urls에서 path를 통해 view.py를 연결해주고,

views.py에서는 추가할 기능들의 method를 정의해주고,

이 method를 templates에서 html파일과 연결해주는 방식으로 만들어주면 된다.

 

GET과 POST가 기본적인 기능이고, if문을 통해서 만들어주면 된다.

예시)

def create(request):
    if request.method == "POST":
        Todo.objects.create(content=request.POST['content'])
        return redirect('/todo/')
    elif request.method == "GET":
        return render(request, "todo/create.html")
    else:
        return HttpResponse('error', status=405)

(redirect / HttpResponse / 클래스 Todo 같은것들은 Ctrl+마우스를 가져다대면 fix할 수 있는 목록이 나와서 쉽게 import해줄 수 있음)