게시판 app을 만들기로 계획하면서 커뮤니티 게시판과 공지사항 게시판은 다르게 만들어보고 싶었는데, 어떤 게시글 안에 자주 등장하는 단어를 필터링하여 다른 게시글에서도 등장하면 게시글들을 가져와 게시글 하단에 연관 게시글이 추가로 보이게 화면에 그리는 게 목표였다. 게시글에서 등장하는 단어를 필터링하기 위해선 형태소 분석을 한 단어들이 몇 번 등장했는지 카운트한 뒤, 제일 많이 많이 등장한 단어를 가지고 다른 게시글들에 해당 단어로 필터링한 후 게시글을 정렬하도록 코드를 작성해 봤다. 한글 형태소 분석기는 Okt, Komoran, Kkma, Mecab가 있는데 프로젝트에는 Okt를 사용했다. (각 형태소 분석기마다 연산속도가 다를 수 있고, 한글 문장 안에 영어 및 숫자가 있을 경우 오류가 발생할 수 있..

기존에 프로젝트에 user app을 추가하여 models.py를 정의하여 회원을 직접 만들었다면, 이번엔 django가 제공하는 인증 시스템 이용해서 간단하게 회원 인증 여부를 구현해 봤다. (공식 문서) django.contrib.auth 앱은 인증 시스템을 담당하는 앱으로 회원을 관리할 수 있는 기능을 기본적으로 제공한다. (※ 'settings.py 파일 INSTALLED_APPS에서 확인할 수 있다.) 해당 앱에 내장되어있는 기본 User 모델은 username, password, first_name, last_name, email, groups, is_staff, is_active 등 여러 개의 필드를 기본적으로 가지고 있다. 기본 User 모델을 사용하면서 추가적으로 필드를 추가하고 싶은 경우..
유저 앱의 기능을 Django에서 제공하는 인증 시스템을 사용해 보려고 이것저것 시도해 보면서 알게 된? 부분을 개인적으로 정리해 보았다. (chatGPT 참고 👍) 부끄럽지만 ^^.. 작성한 코드를 살펴보면 'POST'요청에서 사용자로부터 ID로 사용되는 email값과 password값을 입력받는데, Django에서 제공하는 authenticate() 함수와 login() 함수를 사용하여 사용자 인증과 사용자 ID를 세션에 저장하려고 했다. ※ authenticate() 함수가 실행되면 받아온 매개변수 값(아래 코드에서는 email값과 password값)이 유효하지 않는다면 None 값을 반환한다. → 폴더명\hyj\users\views.py def login(request): if request.me..

Django로 미니 프로젝트를 만들면서 MVC이 아닌 MVT 패턴을 활용하여 View에서 만든 로직을 Template을 활용해서 화면을 그려보고있는데, 개인적으로 어려웠던 (?) 부분을 정리해본다. 문제 발생 특정 키워드 검색 시 나오는 게시글들이 6개가 넘으면 페이지 네이션 적용이 되게끔 코드를 작성했는데, 다음 페이지로 넘어갈 때 키워드 검색 결과가 없어짐 → Desktop\hyj\board\views.py 더보기 def search_post(request): key_word = request.GET.get('key_word','') post_list = Post.objects.all().order_by('-id') key_word = unquote(key_word) search_post_list =..

Django로 미니 프로젝트를 만들면서 MVC이 아닌 MVT 패턴을 활용하여 View에서 만든 로직을 Template을 활용해서 화면을 그려보고있는데, 개인적으로 어려웠던 (?) 부분을 정리해본다. Template 폴더 구조 및 settings.py에 위치지정 프로젝트 manage.py 파일이 있는 경로에 templates 폴더와 static 폴더를 나눌수도 있고, templates 폴더 내부에 static 폴더를 넣을 수도 있다. 또 static 폴더에는 css, js, img 등 따로 폴더를 나눠 정리할 수도 있다. ※ settings.py에 templates과 static 폴더 위치를 지정 해야한다. 💦 → 구조 예시 프로젝트 settings.py에 templates과 static 폴더 위치를 지정..

Django에서 S3를 사용한 파일 업로드 기능을 구현해 보면서 작성자(본인) 기준이해하기 어려웠던 부분을 정리해보았다. AWS S3는 쉽게 말하면 클라우드 기반의 객체 스토리지 서비스다. 구글 드라이브처럼 파일을 저장하는(?) 서비스라고 보면 될 것 같다. 그리고 버킷은 객체(파일)들을 저장하고 관리하는 역할을 한다. (자세한 개념/원리에 대해 알고 싶다면 인파님 블로그를 보면 자세하게 설명되어 있어 좋다. 👍) S3 버킷을 만드는 과정은 다른 블로그 글을 참고하여 만들었다. 😊 📌 S3 버킷 만들기 (버킷 정책) 더보기 AWS에서 S3 클릭 버킷 만들기 클릭 버킷 이름 AWS 리전 선택 후 버킷 액세스 차단 설정을 해제 (default 값은 모두 차단)하고 버킷을 만든다. 만든 버킷의 권한을 누르고 ..
환경 변수 설정 Django로 프로젝트를 만들 때 secret key, DB설정 등 따로 설정 파일로 만들어. gitignore에 추가하여 github에 올리곤 했다. 위와 같은 방법은 퍼스널 한 프로젝트에선 괜찮겠지만, 실제 서비스를 배포할 때는 '. env' 파일을 사용하여 환경 변수를 설정하여 안전하게 관리한다고한다. 이렇게 환경 변수를 '.env' 파일을 사용하여 설정하는 이유는 보안, 포트번호, 데이터베이스 등 외부에 노출하면 안 되는 민감한 정보를 보호하기 위해서인데, django-environ 모듈을 사용해서 환경 변수를 설정하는 방법을 알아봤다. (※ environ 모듈 말고도 dotenv과 같은 다른 모듈도 있다.) 공식 문서에 어떻게 설정하는지 나와있기 때문에 공식 문서를 바탕으로 사용..
Unit Test 작성 처음 만들어본 프로젝트를 리펙토링 하면서 구현했던 기능에 대해 테스트 코드를 작성해 보면서 어떤 방법으로 테스트 코드를 작성하는지 알아보았다. 장고 공식 문서를 살펴보면 친절하게 테스트 코드에 대해 작성해야 하는 이유, 작성 방법, 실행 방법, 버그 수정 방법을 안내해주고 있는데, 설명이 부족한 부분은 모질라를 보고 참고했다. Test의 종류는 3가지가 있지만 가장 작은 단위 테스트인 유닛 테스트(Unit test)를 작성하여 class 함수 단위로 작성했다. TestCase 기본 클래스 (django.test.TestCase) 이 테스트 클래스는 테스트가 실행되기 전에 하나의 데이터베이스를 생성하고 모든 과정을 테스트 한다. class YourTestClass(TestCase):..
이전 포스팅에서 작성했던 방법은 선택 항목이 늘어날수록 코드를 재수정해야 한다는 점 때문에 이번 3차 프로젝트에는 코드 리팩터링을 하다 Q객체를 이용하여 query string을 좀 더 확장성 있게 구현해 보기로 했다. 처음 equipment list url로 들어왔을 때 등록된 모든 장비 항목이 보여야 된다. 그 후 선택(옵션) 값을 Query string으로 값을 받아서 필터링으로 값을 빼와서 결괏값을 다시 전달해주면 된다. 마찬가지로 list를 보는 페이지는 equipment/list로 끝나게끔 url 주소를 정의했다. # equipment/urls.py 파일 from django.urls import path from equipment.views import EquipmonetListView, E..

Django를 이용하여 REST API를 설계할 때 settings.py 에서 INSTALLED_APPS 하단에 MIDDLEWARE 부분 중 몇몇 기능을 비활성화 처리하는데 그 중 이 'django.middleware.csrf.CsrfViewMiddleware' 부분에 대해 알아보려고 한다. CSRF - Cross Site Request Forgeries 사이트 간 요청 위조(또는 크로스 사이트 요청 위조)는 웹사이트 취약점 공격의 하나로, 인증된(권한을 가진) 사용자가 자신의 의도와 무관하게 공격자가 의도한 행위(수정, 삭제, 등록) 요청하게 하는 공격(해킹)을 말한다. 예를 들면 로그인과 같은 사이트에 인증된 사용자에게 해당 웹의 요청 중 하이퍼링크에 나쁜 코드를 심어 인증된 사용자에게 전송한다. 해..
- Total
- Today
- Yesterday
- 검색 결과 내 페이지네이션
- git공부
- Java
- python3
- Magazine K
- 디자인 패턴
- 커맨드 객체
- 톰캣
- path variable
- 회원가입
- django
- git 공부
- git
- API
- 한글 형태소 분석기
- 암호화
- Django tutorial
- django-environ
- error: failed to push some refs to 'https://github.com/
- 혼자 공부하는 파이썬
- Spring
- Python
- authenticate()
- 면접을 위한 CS 전공 지식 노트
- 웹페이지
- 회원 로그인
- 배열
- musma
- 환경 변수 설정
- django.contrib.auth
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |