일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 카톡
- S3
- SSA
- wetube
- node
- crud
- NeXT
- EC2
- Class
- git
- 튜플
- flask
- merge
- SAA
- RDS
- socket io
- AWS
- MongoDB
- react
- 파이썬
- 채팅
- pandas
- lambda
- TypeScript
- 중급파이썬
- Vue
- async
- Props
- dict
- docker
- Today
- Total
목록전체 글 (420)
초보 개발자
field lookups를 활용하면 원하는 조건을 상세하게 지정하여 찾을 수 있다. 우리는 search기능을 만들어 조건에 맞는 방들을 추리기 위한 기능을 만들어 볼 것이다. 먼저 search.html을 만들고 우리가 설정한 필드의 값들을 다 담아주었다. views에서도 값을 받아와서, filtering을하고 다시 그 값을 html에 보내주어 우리가 원하는 조건이 모두 체크되어 있도록 해주었다. 먼저 filter를 해주기 위해서 qs에 모든 방을 담아둔다. filter()만해두면 모든 값이 다 들어오게 된다. filter_args라는 딕셔너리를 만들고 거기에 조건을 하나하나 추가해 나가는 방식이다 city city에 아무 값도 없다면 기본값이 Anywhere로 해두었다. 만약 Anywhere이 아니라면 ..
Http404 pk값을 받아와서 그에 해당하는 방을 보여주는 기능이다. 다만 여기서 url에 213123과 같은 숫자를 적으면 우리의 db에 값이 없기때문에 오류가 날 것이다. 따라서 try, except문을 사용하여 제어해주려고 한다. 먼저 DoesNotExist가 일어났을 때 raise Http404()를 에러를 일으킨다. 이는 자동으로 templates에 404.html이 있는지 확인하고 있다면 그 html을 자동으로 render해준다. 이를 사용하기 위해선 from django.http import Http404 를해와야 한다. 이렇게 하지않고 단순히 return redirect(reverse('core:home')) 처럼 해주어도 된다. FBV detail -> CBV detail 위의 코드를 ..
전에도 한번 말했다싶이 html에 href = "/room/1/edit-room" 이런식으로 적어놓았다고 했을 때 실행은 잘 되지만 만약 저 href를 바꿔야 할 때는 일일이 다 찾아서 바꿔야 할 것이다. 이를 위해 저번에 name과 namespace(app_name)을 설정해둔 적이 있다. 이를 사용하는 방법은 아래와 같다. url template tag라고 한다. href = "{% url "app_name:name" 매개변수 %}" app_name이 먼저 오고 그 뒤에 name이 오는 형식이다. 근데 뒤에 매개변수라고 적어놓은 것은 무엇일까??? 사실 적당한 이름이 생각이 안나서 대충 적어 두었다... 저기에는 room/1 이런식으로 1이 들어가는 자리이다. 사용하기 위해서는 path에서 로 감싼뒤..
우리는 pagination을 구현해보았다. 근데 이번에는 class based view를 만들어 보려고한다. 좀 전에는 함수로 만들었지만 이번엔 클래스로 만들어 준다. 장고가 우릴 위해 많은 클래스들을 이미 만들어 두었고 우리는 이걸 사용하면 된다. 우리가 사용할 listview는 list오브젝트를 보여준다. 기본적으로 model을 정의해주면 된다. 그리고 urls로가서 다음과 같이 적어주자. path는 url과 함수만 가진다. 그리고 homeview는 함수가 아니라 class이다. 장고에서 class based view는 view로 변신시켜주는 메소드가 있다. as_view()를 적어주면 된다. listview는 render, request, template등도 해줄 필요가 없이 자동으로 해준다. 자동..
이번에는 django가 제공해주는 Paginator를 사용해서 좀 더 간단하게 만들어보려고한다. 먼저 Paginator라는 것을 import해 온 뒤에 첫번째 인자로 object_list를 넣고, 두번째에는 몇개씩 출력할 것인지를 넣어준다. orphans는 추가옵션인데, 이건 만약 게시물이 23개라면 총 3페이지가 출력이 될 것이다. 10 10 3 이렇게, 하지만 5개 이하는 마지막 페이지에서 같이 출력하라는 명령어이다. 즉 이 경우엔 10 13 이렇게 출력이 될 것이다. 만약 27이라면 10 10 7 이렇게 출력이 될 것이다. 그리고 rooms는 paginator를 받아서 get_page(num)을 해주는 것인데 이 것이 참 유용하다. 기본적으로 아무 값이 들어오지않거나, 공백을 넣어도 기본적으로 1페..
방들을 쫙 나열하는 것 보다, 한 페이지에 10개씩 보여주는 것이 좋다. 그러기 위해선 페이지네이션을 만들어야 한다. 먼저 django에서 제공하는 페이지네이션을 사용하기전에 수동으로 만들어 어떤 로직으로 만들어 지는지 알아보자 먼저 page_num은 ?page=1 이런식으로 url에 담겨오는 정보를 받아오는 것이다. 만약 이 정보가 공백 이거나 /?page= 혹은 빈값이라면 / 1이 담기도록 int( or 1) 을 적어준 것이다. page_size는 10개씩 보여주기 위함이고, limit은 페이지에 따라 다음 정보를 보여주기 위함이다. offset은 limit에서 10을 뺀 값이다. rooms를 보면 page_num의 값에 따라 다른 limit값과 offset값이 들어가는 것을 확인할 수 있다. pag..
render를 사용하여 html을 보여주고 거기에 context를 사용하여 정보를 넘겨주는 것 까지 해봤다. 근데 여기서 우리가 base.html이라는 기본 적인 틀을 만들어 두고 사용할 수 있다. templates의 폴더에 base.html을 만들고 위와 같이 {%block content%}{%endblock%} 을 만들어주면, extend로 받아올 수 있다. home.html은 base.html의 하위에 존재하지만 ../base.html과 같이 안적어줘도된다. 여기서 base.html에 block content가 있다면 home.html에서도 그 block을 사용할 수 있다. 만약 base와 block이름이 다르다면 사용할 수 없다. 이번엔 header를 만들어줘보자 모든 페이지에 다 보이게 하려면 ..
이제 첫 페이지를 만들어보려고한다. 지금은 아무 설정도 되어있지 않기에 localhost:8000으로 들어가면 오류가난다. 이를 설정해주려고한다. 먼저 url을 설정해주어야하는데, 우린 앞으로 수많은 url을 만들어야하기 때문에 교통정리를 해줄 필요가 있다. /login /user/1/edit /room /room/1/edit ... 과 같이 수많은 url이 생기는데 하나에 다 정리하면 얼마나 복잡하겠는가? 따라서 각 app안의 urls.py에 관련된 url만 받아와서 view를 실행시켜준다. 먼저 /, /login, 과 같은 기본적인 url은 core app에서 다뤄주려고한다. urlpatterns라는 배열을 만들고 거기에 path를 하나씩 만들어주어야 한다. 여기서 ''라는 것은 아무것도 적히지 않았..