본문 바로가기
728x90
반응형

python81

[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.
11. Python - Thread를 사용한 여러 기능 동시 실행(1) 최근 필자는 완성하지 못한 개인 프로젝트를 싸그리 중단하고 from the scratch로 다시 하나씩 코드를 작성해나가는 중이다(Linux 제어 코드부터 진행중이다. PEP8 Convention도 맞추고, 몇 개월 지나면 알아볼 수도 없는 코드도 줄일 겸). 필자가 진행 중인 프로젝트 중 하나를 잠깐 소개하자면, Linux로 인가받지 않은 사용자가 로그인을 시도하는 경우 해당 침입자의 IP를 firewalld에 Drop 정책으로 등록하는 과정을 실시간 + 자동으로 진행하도록 만드는 프로그램의 제작이다(필자가 만들고자하는 프로그램과 유사한 프로그램이 오픈 소스로 있었는데 이름을 잊어버렸다...). Linux에 로그인을 시도하는 사용자의 정보는 보통 /var/log/secure 파일에 저장된다. 위의 스크.. 2024. 3. 22.
[자료구조 with Python] 16. 선형 자료 구조 - Queue(1) 이 블로그에서 다루는 선형 자료구조의 마지막, Queue에 대해 글을 작성하려한다. Queue는 네트워크나 보안 장비와 연관있는 곳에서 개발 관련 업무를 진행한다면 무의식적으로라도 사용하게 되는 자료구조인데, 하드웨어 프로그래밍이건 웹 프로그래밍이건 사용하는 곳이 많아 알아두면 쓸 데가 많다. 필자의 경우도 회사에서 판매하는 보안 장비가 전송하는 Syslog를 실시간으로 받아, 해당 Syslog를 변형하여Splunk로 다시 전송하는 프로그램을 Queue와 Thread로 만들었던 경험이 있다. 물론, 그 때는 Queue라는 의식도 안하고 작성했지만 말이다... 1. Queue 개요 Queue도 Stack처럼 개념 자체가 어려운 자료구조는 아니다. 단지 Stack과 달리 양 방향이 뻥 뚤린 파이프 모양을 띄.. 2024. 3. 20.
[자료구조 with Python] 15. 선형 자료 구조 - Stack 또 순서가 어그러졌다. 원래 힙 정렬(Heap Sort)에 대해 포스팅을 작성하려했는데, 힙 정렬 포스팅을 하려니 Heap이 발목을 잡고, Heap을 포스팅하려니 이진 트리(Binary Tree)가 발목을 잡는다. 물론 바로 힙 정렬 내용을 포스팅하고 추후 링크로 연관된 내용에 대한 포스팅을 연결해도 되지만, 그래도 직접 코드도 작성해보지 않고 포스팅하기에는 틀린 내용도 있을까봐 자신도 없고 해서 테스트 후에 천천히 작성을 하려 한다. 조금 시간도 벌 겸, 필자가 이전 회사 업무 중에 많이 사용했던 Stack과 Queue에 대해서 조금 다루어볼까 한다. 먼저 이번 포스팅은 Stack 부터. ** Java의 Stack과 Queue는 이 포스팅을 참고하자 1. Stack 개요 맨날 숫자 줄 세우기 놀이만 하.. 2024. 3. 19.
728x90
반응형