이번에는 게시물 정렬을 구현해보겠습니다. 게시물 정렬과 동시에 페이지네이션을 적용하려하니 get 방식으로 둘 다 넘기면 /?page=1&sort=likes 이런 식으로 될 줄 알았는데 select 값이 고정이 되지 않아 page를 넘기면 sort 값이 초기화 되는 문제가 발생하였습니다. 그렇기에 좀 강제적인 방법을 사용하였습니다. 찾아보니 ajax나 javascript를 이용해 제어할 수 있지만 아직 이 부분은 모르기에 추후에 수정하도록 하겠습니다. sort 자체는 쉽습니다. 저는 home.html을 이용해 다뤄보겠습니다. views는 다음과 같습니다. def home(request): sort = request.GET.get('sort','') if sort == 'likes': content_list..
www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 뭔가 그림만 보면 bfs 같은 걸 이용할 거 같이 생겨서 풀어봤는데 문제를 읽어보니 그냥 노가다 구현이었다. 문제 조건은 다음과 같다. 미세먼지의 양과 공기청정기의 위치가 주어졌을 때 1초동안 다음의 일이 일어난다. 미세먼지가 확산된다. 확산은 미세먼지가 있는 모든 칸에서 동시에 일어난다. (r, c)에 있는 미세먼지는 인접한 네 방향으로 확산된다. 인접한 방향에 공기청정기가 있거나, 칸이 없으면 그 방향으로..
www.acmicpc.net/problem/1051 1051번: 숫자 정사각형 N*M크기의 직사각형이 있다. 각 칸은 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 또는 www.acmicpc.net 밤도 늦고 해서 그냥 쉬운 문제를 하나 풀어보았다. 얼른 자야겠다. 문제는 간단하다. 정답률이 왜 낮은지 잘 모르겠다. 아마 string으로 받아야되는데 띄어써서 input 해서 그런거 같다. 주어진 직사각형 숫자 판에서 가장 큰 정사각형의 크기를 구하는 것이다. 여기서 정사각형은 각 꼭지점의 수가 모두 일치하면 된다. 최대 크기는 50 x 50 이다. 전체 모든 경우를 다 돌아도 최대 2500 가지이고, ..
소셜로그인 때부터 이 녀석이 떠서 뭔지 정리해보았습니다. You have multiple authentication backends configured and therefore must provide the `backend` argument or set the `backend` attribute on the user. 영어가 부족한 관계로 파파고의 힘을 얻어보았습니다 ㅎㅎㅎ (사실 해석할 줄 압니다.) 인증 백엔드가 여러 개 구성되어 있으므로 '백엔드' 인수를 제공하거나 사용자에게 '백엔드' 특성을 설정해야 합니다. 라고 하네요. 소셜로그인 기능을 추가하느라 구글 이메일 정보를 따와서 백엔드가 중첩되어 생긴 에러였습니다. 그렇기 때문에 로그인할 때 user의 정보를 어느 백엔드에서 가져와야할지를 설정해주..
이번에는 비밀번호 변경을 해보겠습니다. 찾아보니 역시 django답게 비밀번호를 변경하는 form이 존재했습니다. 하지만 이 form은 비밀번호 8자리 이상 등 귀찮은 조건을 갖추고 있습니다. 그렇기에 form을 이용한 것과 직접 함수를 짠 것 2가지로 해보겠습니다. 1. form 이용 비밀번호 변경을 위한 app의 views.py의 module import 부분에 다음을 추가합니다. from django.contrib.auth.forms import PasswordChangeForm from django.contrib.auth import update_session_auth_hash from django.contrib import messages 그리고 함수는 아래와 같습니다. def change_pa..