본문 바로가기
728x90
반응형

WebFramework20

[Python Django] 17. Django ORM 테이블 사이 1:N 맺기 - ForeignKey 이번 포스팅부터는 Django의 ORM에서 제공하는 테이블 사이 관계를 설정하는 방법에 대해 정리해보려한다. 사실 DB의 테이블도 각각의 데이터가 클래스 객체처럼 동작을 한다고 생각을 한다면, 이 데이터들이 다른 테이블의 데이터와도 상호작용을 할 수 있도록 만들 수 있을 것이다. 예를 들어서, 어떤 포스팅(Post)에 댓글(Comment)을 작성한다고 하면, 작성 글을 정보를 담는 Post라는 테이블과, 댓글 정보를 담는 Comment라는 테이블 사이에 연결 고리가 있어야 할 것이다. 위의 예시에서는 하나의 Post에 여러 개의 댓글이 달리기 때문에, Comment 테이블의 각 데이터는 댓글이 작성된 본체(?) 포스팅을 구별할 수 있는 데이터(보통 Primary Key 값을 많이 사용한.. 2024. 4. 29.
[Python Django] 16. Django ORM과 CRUD 이번 포스팅에서는 Django의 Model을 참조하여, sqlite 파일에 생성된 데이터 테이블에 실제 데이터를 생성, 조회, 수정, 삭제(CRUD)하는 방법에 대해 알아보려한다. 원래는 지난 포스팅의 Custom User Model 생성 방법 중 Mapping 방식과 AbstractBasicUser Class에 대해서 작성하려 했으나, Mapping 방식은 Django ORM을 조금이라도 알고 넘어가는게 나을 듯 하고, AbstractBasicUser는 아직 필자가 파악이 덜 끝난(사실 시작도 못한) 상태라, 추후 포스팅에서 소개하고 링크를 연결하려 한다.   1. Django는 어떻게 데이터를 .sqlite 파일에 저장할까?  필자가 이전에 작성한 Django 관련 포스팅을.. 2024. 4. 25.
[Python Django] 15. Django Custom User Form (2) - Custom User Model 사용 시 유용한 Form 지난 포스팅에 이어 작성하는 내용이다.지난 포스팅 보기    1.  Custom User Model - 로그인 관련 Form:  django.contrib.auth.forms.AuthenticationForm   먼저 회원 로그인부터 수정해보자. 현재 필자의 회원 로그인 Form은 저 위에서 처음 만들었던 UserTestModel(사실 이거 UserTestForm으로 작성하려던 거다)와 크게 다르지 않은데, 여기서 아래와 같이 수정을 진행해보려 한다. *  클래스명 변경:   UserLoginForm*  상속받는 클래스 : forms.ModelForm -> AuthenticationForm*  Meta.fields 속성:  전부 삭제.*  Meta.widget.. 2024. 4. 24.
[Python Django] 14. Django Custom User Form (1) - AbstractUser 이번 포스팅에서는 일반적인 ModelForm이 아닌, Django의 계정과 관련된 ModelForm에 대해 다루어보려한다. Django에서는 Django 내부에서 사용할 사용자 정보의 관리와 인증을 django 내부에 built-in된 별도의 모듈을 사용하여 관리한다. django 프로젝트 폴더 내 INSTALLED_APPS에 기본으로 지정된 모듈 중 admin가 django 사용자와 관련되 모듈이며, 이 모듈로 인해 Django에서 별도로 사용자와 관련된 DB Model을 생성하지 않고도 바로 사용자와 관련된 어플리케이션을 제작하는 것이 가능하다. Django 공식 문서를 보면, 단순히 django.contrib.auth.models에서 제공하는 User Model을 사용하여 손쉽게 사용자를 만들 수 .. 2024. 4. 23.
[Python Django] 13. Django Static 파일 표시 및 업로드 제어 어제... Django에 이미지 올리는 테스트를 하다가 오류가 나 해결하느라 꼬박 하루를 날려버렸다. 지금 진짜 피곤한데, 그래도 의미있는 결과를 잘 정리해둬야 나중에 피곤한 일이 다시 생기지 않는다는 것은 이미 몇 년 간의 블로그 생활을 통해 많이 느껴왔기 때문에, 힘을 내서 정리해보려한다. 오늘 포스팅의 내용은 Django에서의 static 파일 사용법 및 파일 업로드와 관련된 내용이다. static 파일은 그 영문 이름에서도 알 수 있듯이 '정적'인 파일들인데, 이들 파일은 단순히 서버에서 클라이언트로 전달되면 끝인 파일이다. 즉, 사용자에게 서비스를 하기 위해 '서버에 저장'된 파일들인데, 이들 파일은 외부 환경에 관계없이 일정한 결과를 돌려주는 역할을 한다. HTML의 디자인을 담당하는 CSS나.. 2024. 4. 17.
[Python Django] 12. Django Form / Model 사용하기 (2) 지난 포스팅에서는 게시판 기능을 모방(?)하여 Django 프로젝트를 만들어 보았다. 동시에 ModelForm을 사용하여 DB와 HTML의 입력 폼을 단번에 다룰 수 있는 방법까지 알아보았다. 이번 포스팅은 지난 내용에 이어 Django에서 제공하는 ModelForm의 기능을 조금 더 고급스럽게 사용해보려한다. 지금까지는 Django에서 제공해주는 틀 안에서만 코드를 작성했기에, 아래와 같은 기능을 사용하기가 어려웠다. 1. 특정 입력폼에 대해 설명 덧붙이기 2. 특정 조건의 입력을 벗어난 값을 사용자가 입력했을 때, 즉시 확인할 수 있도록 안내하는 문구를 출력하기. 3. ModelForm에서 위젯 사용하기 이번 포스팅에서는 ModelForm에서 위의 기능을 사용할 수 있는 방법에 대해 알아보려한다. 1.. 2024. 4. 16.
[Python Django] 11. Django Form / Model Form 사용하기 (1) 최근 며칠 간 Django 프로젝트를 만들고 지우고를 반복하면서 웹 프로그래밍 연습을 하다보니, Django가 조금씩 손에 익어가는 중이다. 물론 필자는 Front End 쪽을 거의 5년 전에 독학하고 난 뒤로 제대로 사용한 적이 없어 디자인은 봐 줄 수 없을 만큼 처참하지만, 적어도 가장 중요한 Django의 기본적인 로직이 머리에 제대로 박히게 된 상태라 프론트 쪽은 천천히 배우면 된다고 생각하면서, 최근 들어 전례없이 여유로운 기분을 느끼고 있다. 여러 번 프로젝트를 만들고 폭파시키고 다시 만들고를 반복하다보니, 한 가지 불편한 점이 있다. 아래에 필자가 다시 만든 프로젝트의 결과 화면을 보자. 간단한 게시판 기능이 포함되어 있는 프로젝트를 하나 만들어서 구동했고, 위와 같이 데이터도 잘 들어가는 .. 2024. 4. 15.
[Python Django] 10. DTL(Django Template Language)3 - HTML 반복 작업 및 URL 내 특정 값의 변수화 지난 포스팅에 이어 Django DTL에 대한 마지막 포스팅이다. 이번 포스팅에서는 HTML에서 반복이 필요한 작업이 존재할 경우 DTL 태그를 사용하는 방법, 그리고 URL에 기재된 특정 값을 Django 변수로 사용하는 방법에 대해 알아보려한다. 1. DTL 태그를 이용한 반복문 이전의 포스팅에서 계속 사용하는 프로젝트 파일을 이번 포스팅에서도 사용한다. 우선 필자는 지난 번, 태어난 년도 입력 시 입력 년도에 태어난 사람의 만 나이와 한국식 나이를 서버에서 반환하는 페이지에 대해 프론트 및 백앤드 제작을 진행했었다. 이번에는 구구단 연산과 관련된 내용을 진행하려는데, 구구단의 경우 사용자가 특정 정수를 입력하면 그 정수의 1~9를 곱한 값을 화면에 출력하도록 만들려고 한다. 그리고 결과가 정렬이 될.. 2024. 4. 12.
[Python Django] 9. DTL(Django Template Language)2 - GET/POST 통신 및 URL 관리 지난 포스팅에서 새로 생성한 Django 프로젝트를 계속 사용하여, 필자가 구현하고자 한 기괴한 웹 사이트를 완성해보려한다. 지난 포스팅에서는 DTL의 extends, block을 사용하여 사용자에게 보여 줄 화면의 대략적인 뼈대를 일부 완성해보았다면, 이번에는 형태가 잡힌 HTML에 데이터를 입력하면 서버로 전송 및 값을 반환받는 GET/POST 통신에 대해서, 그리고 내용이 길어지지 않는다면 DTL의 URL의 관리 기능에 대해 정리를 조금 더 진행해보려한다. 1. 테스트 환경 구성 지난 포스팅에서 마무리하지 못한 나머지 페이지에 대해 HTML을 작성한다. 각각의 하위 주소들(age, telnum, gugu)의 index.html에 form 태그를 사용하여 사용자로부터 입력을 받을 수 있도록 만들고, .. 2024. 4. 11.
[Python Django] 8. DTL(Django Template Language)1 - extends와 block으로 HTML 뼈대 만들고 적용하기 지금까지 필자의 Django 포스팅은 Django 프레임워크를 구성하는 파일의 종류와, 이들 파일을 조금씩 수정하면서 기능을 확인해본것이 전부였다. 이번 포스팅부터는 사용자가 접속하는 경우 어느정도 동작하는 Django 웹 서버를 구성해보려한다. 그 첫 번 째 주제로, 웹에서 가장 기본적으로 다루어야하는 HTML를 Django가 제공하는 DTL로 다룰 수 있는 방법에 대해 정리해보려한다. 1. Django 프로젝트 재구성. (1) 프로젝트 및 앱 생성 필자는 필자가 사용하는 Linux 가상환경(CentOS 8)에서 바로 포스팅에 사용할 코드를 작성하려한다 - 필자의 Linux는 날 것 그대로의 vi 편집기라 자동 완성 따위(?)는 제공하지 않아 직접 코드를 익히기에 확실히 좋다 - 웹 접속 IP와 포트는.. 2024. 4. 9.
[Python Django] 7. 간단하게 정리한 Django의 MVT 모델 오래 전에 작성한(가장 최근 것이 8개월 전이다...) 몇몇 Django 포스팅 통해, Django 서버에서 필수적으로 설정해야하는 파일들에 대해 알아보았다. - settings.py - urls.py(1) - urls.py(2) - views.py - models.py 확실히 격세지감이라고 느끼는 것이, 필자가 Django를 처음 건드릴 때인 2021년만 해도, Django의 구조를 쉽게 이해할 수 있는 참고 서적이나 강의가 없어서 한 줄 코딩하고, 서버 돌리고, 테스트를 진행하면서 배워야했는데, 잠깐 손 놓고 있는 몇 년 사이에 이해가 쉬운 이런 저런 강의가 많이 나와버렸다. 최근 들어 필자는 Django에서 MVT 패턴이라 불리는 구조를 최종적으로 이해할 수 있게 되어, 이번 포스팅에서는 Djang.. 2024. 4. 8.
[Python Flask] 3. Jinja Statement를 활용한 HTML 제어문 및 반복문 지난 포스팅에서는 Flask에서 사용하는 Jinja Expression - 제어자, 필자는 지난 포스팅에서 템플릿 변수라고 소개했다 - 를 사용하여 HTML 파일에 Python의 변수를 입력하는 방법에 대해 알아보았다. 그런데, 지난 포스팅의 마지막 부분에서 확인했듯이, 로그인을 진행하지 않았음에도 화면 아랫부분에에 출력되는 "로그인 결과"가 영 거슬린다. 필자가 만든 페이지로 첫 접속을 시도했을 때는 GET으로만 페이지를 불러오기 때문에 username의 입력값이 없어 로그인 결과가 None으로 출력되는데, 이게 은근히 보기가 싫다. 하지만 지난 포스팅에서도 언급했듯이 HTML은 - 프로그래밍 언어가 아니고 - 문서이기 때문에 저 로그인 결과와 관련된 태그를 직접 삭제하는 것이 불가능하고, 별도의 방식.. 2024. 2. 29.
728x90
반응형