본문 바로가기

Web Programming/Django

(32)
Django 유저 Accounts 비밀번호 재설정 유저들이 비밀번호를 잊어버렸을 때 처리할 수 있는 다양한 방법 중에 일반적으로 재설정 이메일을 많이 활용한다. 그래서 User 모델에 email을 저장해두고 서버에 해당 이메일이 있을 경우 재설정 이메일을 발송하여 token 검사 후 실제 재설정이 가능하도록 구현하였다. 먼저 User 모델에 Email도 함께 저장한다. views.py 중 ... user = User.objects.create_user(username=request.POST['username'], email=mail_to, password=request.POST['password1']) 그리고 Accounts/views.py 에 password_reset 클래스를 작성한다. class MyPasswordResetView(PasswordR..
django crontab 장고 크론탭 웹 이든 어떠한 형태의 서버에서 주기적으로 배치 또는 실행이 필요한 작업들이 존재한다. 예를 들어, 서버에서 주기적으로 매주 월요일에 필요 없는 임시 파일들이라든지 여러 가지 파일들을 지워줄 때나 어느 정도의 시간이 지나 만료된 세션들을 종료한다든지 얼마든지 다양한 형태의 작업들이 필요로 되어진다. 이럴 때 필요한 것이 바로 크론탭이다. 크론탭은 서버 내의 특정 작업(또는 명령)을 특정 주기로 스스로 실행하도록 하는 것을 뜻한다. 당연히 Django에도 이러한 Crontab을 지원하는 모듈이 존재한다. 바로 django-crontab이다. 단, django-crontab은 리눅스 기반이기에 윈도우 환경에서는 동작되지 않는다! 먼저, 서버에서 모듈을 설치하여준다. pip install django-cron..
Ajax 통신하기 새로고침(Reload) 없이 통신하기 위해서 비동기 통신 방식인 Ajax를 활용할 수 있다. jquery를 가져오고 script를 통해 손쉽게 사용 가능하다. views.py from django.http import HttpResponse import json ... # ajax 통신 def check(request): room_type = request.POST.get('room_type', None) room_date = request.POST.get('room_date', None) # ajax 통신을 통해서 template에서 POST방식으로 전달 message= "통신 성공" print(room_type) print(room_date) context = { 'message': message, ..
Static 추가하기 # Settings.py에 설정 STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') # 해당 App 폴더 내에 Static 폴더 만들어 준 후 그 안에 다시 App 이름 작성(구분용) 그리고 css, js, img 파일들을 넣어준다 # 터미널 명령어 $ python manage.py collecstatic # template 파일 수정 {% load static %} ... ... ...
Django 회원가입 이메일 인증(SMTP) 많은 포털 사이트에서 회원가입 시 웹 메일 인증 시스템을 채택하고 있다. (현재는 대부분 보안성 때문에 기기 인증 등도 활용되고 있다고 한다...) 프로젝트를 진행하면서 해당 부분이 필요하게 되어 찾아보며 정리해봤다. 진행되는 로직은 크게 SMTP를 활용하여, User의 is_actvie 속성을 활용한다. SMTP 웹 메일을 통해 토큰을 날려주고, 해당 토큰을 인증하기 전 까지 is_active 속성을 False로 둔다. 그리고 토큰을 통해 인증을 하는 순간 is_active 속성을 True로 변경하여 User 객체를 인증한다. (즉, 토큰을 SMTP 프로토콜을 통해 날려준다) # SMTP 간이 전자 우편 전송 프로토콜(Simple Mail Transfer Protocol, SMTP)은 인터넷에서 이메일..
Like 좋아요 모델 추가하기 좋아요를 구현하기에 앞서 모델 M:N 관계를 숙지해야 한다. 다수 대 다수의 관계를 맺고 있는 좋아요는 M:N의 관계 이다. 쉽게 말해, 글 하나에 여러 개의 댓글이 구성하던 1:N 의 관계와 달리 여러 유저와 여러 개의 좋아요의 관계가 구성되기에 M:N 다수의 관계이다. 구현에 앞서, Blog, Comment, User 3개의 모델이 구성되어 있어야 한다. 먼저 model에 Like 모델을 다대다(ManyToManyField)를 활용한다 # project/blog/models.py # M:N을 위한 속성 class User(models.Model): ... likes = models.ManyToManyField( User, # User 모델과 Blog 모델을 M:N 관계로 두겠다. through = '..
백엔드_CRUD 실습 3 오늘의 해볼 실습은 CRUD를 마무리하는 작업이다. 보완을 통해서 보다 나은 성능의 CRUD 처리가 가능하게 할 것이다. 진행될 작업은 크게 3가지 이다. 1. Home 페이지에서 글 최신순 나열 2. CSRF 보안 3. Templates 폴더 정리 1. Home 페이지에서 글 최신순 나열 일반적으로 웹 페이지 게시판에서 글은 가장 최신의 글이 가장 먼저 보이게 한다. 그래서 해당 페이지로 들어오면 눈에 띌 수 있도록 가장 위에 보여줘야 한다. 따라서 글을 최신순으로 나열하는 것은 간단하지만 사용자 편리성을 위해 중요한 부분이다. 이러한 기능을 장고에서는 단 한줄을 통해 쉽게 해결이 가능하다. # blogProject/blog/views.py # Create your views here. def home..
백엔드_CRUD 실습 2 오늘의 해볼 실습은 지난 admin 기능을 통해 글을 작성하고 수정하고 삭제할 수 있었던 CRUD에서 웹 페이지 내에서 작성, 수정, 삭제를 할 수 있는 완전한 CRUD를 업그레이드를 해보려 한다. CRUD는 데이터를 처리하는 4가지 방법이지만, 좀 더 세부적으로 나누게 되면 7 가지의 기능으로 이야기 된다. C - new(글 작성 공간 띄워주기), create(실제 글(data)를 만들기) R - home(전체 글 화면 보기), detail(글 하나하나 세부적으로 보기) U - edit(글 수정 공간 띄워주기), update(실제 글(data) 수정하기) D - delete(글 삭제하기) 이중에서 우리는 실제 R의 home과 detail만 웹 페이지에서 이용할 수 있었고 나머지는 admin에서 이용할 ..