일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- node
- SAA
- NeXT
- 튜플
- 채팅
- Props
- SSA
- S3
- socket io
- Vue
- RDS
- merge
- 중급파이썬
- react
- 카톡
- pandas
- AWS
- MongoDB
- docker
- 파이썬
- lambda
- wetube
- dict
- Class
- EC2
- crud
- flask
- TypeScript
- async
- git
- Today
- Total
목록Python/airbnb 클론 (43)
초보 개발자
FormView를 사용하여 좀 더 간편하게 만들 수 있다. 먼저 View를 상속하지 않고 FormView를 상속하였다. 이전에는 get 요청일 때와, post요청일 때 나눠서 생각하였는데 이렇게 하면 알아서 get일때와 post일 때를 구분하여 form을 뿌려주는 것 같다. form_class등 정보를 적어주는데 success_url에는 reverse가 아닌 reverse_lazy를 적어주는 이유는 CBV가 정의될 때 url은 순서상 읽히기 전이기에 core:home이라는 url을 읽어올 수가 없다. 하지만 reverse_lazy는 실행이 되는 순간 읽히기 때문에 이 문제를 해결해줄 수 있다. 우리가 해줄 것은 def form_valid를 오버라이딩 해주는 것이다. 훨씬 깔끔하게 잘 된 것 같다. Vie..
기본 골격 LogitnForm을 email과 password로 구성해주었다. password는 charField이기 때문에 타이핑하는 문자가 그대로 노출이 된다. 따라서 widget을 사용하여 그 부분을 가려주었다. LoginView를 CBV로 만들어 주었다. get과 post일 때를 구별해주었다. form을 만들고 POST로 요청을 보낸다. 전에 GET으로 보낼 때는 {% csrf_token %}이라는 것을 사용하지 않았는데, 이번 POST요청 시에는 이걸 사용하지 않으면 요청이 불가능하도록 사전에 django가 막아준다. 아래가 csrf token이다. 간단히 설명해보자면 유저가 로그인을 하면 서버가 로그인을 했다는 정보를 유저의 브라우저에 넘겨주고 이걸 쿠키라는 곳에 담는다. 서버와 브라우저는 st..
django에서 S3와 RDS를 연동하는 방법을 해보려고 한다. 폴더를 아무거나 하나 만든다. pipenv --three pipenv shell pipenv install django django-admin startproject config .
우리가 방금 했던 작업들을 Forms API를 사용하면 쉽게 가능하다. 우리가 일일이 input에 값을 다 돌려주는 것도 django가 대신 해준다고한다. 그러기 위해선 form을 사용해야하고 room폴더 안에 forms라는 새로운 파일을 하나 만들어주자. form도 models에 있는 것처럼 fields라는 걸 가지고 있다. 단 models.Charfield 이런식이 아니라 forms.Charfield이다. from django import forms를 해온 뒤 아래와 같이 작성 후 form을 생성 후 context로 넘겨주면 아래와 같이 브라우저에 나온다. input 이런거 하나도 안줬는데 말이다. 심지어 lable도 넣어주었다 price필드와 room_type 필드를 추가해주었다. 그리고 city에..
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등도 해줄 필요가 없이 자동으로 해준다. 자동..