최종주차

김나현·2024년 10월 2일
0

로그아웃 - sessionid 삭제
로그인 - sessionid 생성

데이터에 세션테이블 존재(djnago_session)

auth_logout(request) 코드한줄로 끝남

로그인도
auth_login(request, form.get_user()) 코드 한줄로 끝남

위 로직은
url로 로그아웃처리가 된다.(get이든 post이든)

이렇게 하면 url로 로그아웃 처리가 되는게 아닌
if 조건문으로 post일때만(로그아웃 버튼을 눌러야) 로그아웃 처리가 가능하게끔 한다.

<장고가 http요청을 처리하는 다양한 방법>

  1. django shortcut funtion들 사용하기
  • render() : template을 렌더링해서 전달
  • redirect() : 특정 경로로 요청을 전달
  • get_object_or_404() :
    queryset api 에 objects.get() 모델 클래스에서 부르는 get()은 찾으려고 하는 데이터가 없을 때, 두개 이상의 데이터가 찾아 졌을 때 터진다.

    get_object_or_404(모델클래스명-어디서찾을지,조건-어떻게 찾을지 pk=pk )
    get_object ()안에있는걸 가지고 시도 -> 못찾으면 404에러를 내준다. <- shortcuts안에 있다.

500번 코드
상태코드(100~500번대까지)
100 300 노신경
200, 400, 500 구분하기
200번대 : 성공
400번대 : 실패(클라이언트 잘못으로)
500번대 : 실패(서버 잘못으로)
장고는 서버
->400번대는 괜찮다
500번대는 망한거(서버 잘못)
404 유명 page not found

get_list_or_404()
리스트 여러개를 조회하는데 비어있으면(빈리스트) 404로 보낸다
여러개 조회는 filter()

  1. view decorator들 사용하기
    @
    함수를 꾸며준다:보통 함수를 다른 함수로 감싸서 원하는 동작을 추가하는 방식으로 작동하죠. 데코레이터를 사용하 면 코드의 재사용성이 높아지고, 중복 코드를 줄일 수 있습니다.

HTTP 메소드는 웹에서 클라이언트와 서버 간의 통신을 정의하는 방법입니다. 주요 메소드는 다음과 같습니다:
링크텍스트
1. GET
용도: 서버에서 리소스를 요청합니다.
특징: 데이터를 가져오고 서버의 상태를 변경하지 않음. URL에 쿼리 문자열을 포함할 수 있습니다.
예시: 특정 웹 페이지를 요청할 때 사용.
2. POST
용도: 서버에 데이터를 제출합니다.
특징: 주로 폼 데이터를 서버로 보내거나 리소스를 생성하는 데 사용. 응답 본문에 새로운 자원에 대한 정보가 포함될 수 있습니다.
예시: 사용자 등록이나 로그인 시 사용.
3. PUT
용도: 서버의 리소스를 생성하거나 업데이트합니다.
특징: 지정된 URI에 리소스를 새로 만들거나 기존 리소스를 대체합니다. 보통 요청 본문에 리소스의 전체 상태가 포함됩니다.
예시: 특정 사용자의 정보를 업데이트할 때 사용.
4. DELETE
용도: 서버에서 리소스를 삭제합니다.
특징: 지정된 URI의 리소스를 제거합니다.
예시: 특정 게시글이나 사용자를 삭제할 때 사용.
5. HEAD
용도: GET 요청과 유사하지만, 응답 본문 없이 헤더 정보만 요청합니다.
특징: 리소스의 메타데이터(예: 크기, 마지막 수정 시간)를 확인하는 데 유용합니다.
예시: 특정 파일의 존재 여부를 확인할 때 사용.
6. PATCH
용도: 리소스의 일부를 수정합니다.
특징: 전체 리소스를 보내지 않고 필요한 부분만 업데이트합니다.
예시: 사용자의 프로필 사진만 변경할 때 사용.
7. OPTIONS
용도: 특정 URI에서 지원하는 메소드를 확인합니다.
특징: 클라이언트가 서버에서 어떤 HTTP 메소드를 사용할 수 있는지 확인하는 데 사용됩니다.
예시: API의 사용 가능 메소드를 확인할 때 사용.
8. TRACE
용도: 요청이 서버에 도달하는 과정을 추적합니다.
특징: 진단 목적으로 사용되며, 클라이언트가 서버에 보낸 요청을 그대로 반환합니다.
예시: 요청 경로를 디버깅할 때 사용.
9. CONNECT
용도: 클라이언트와 서버 간의 터널을 설정합니다.
특징: 주로 프록시 서버와의 HTTPS 연결을 설정할 때 사용됩니다.
예시: 보안 연결을 설정할 때 사용.
이 외에도 HTTP/2, HTTP/3에서는 추가적인 기능과 메소드가 도입될 수 있지만, 위에서 언급한 메소드들이 가장 일반적으로 사용되는 것들입니다. 각 메소드는 특정한 목적과 특징이 있으니 상황에 맞게 활용하는 것이 중요합니다.

require_http_methods():인자로 리스트[] 넣는다
[]이 안에 있는 함수 외에는 차단한다([]안에 있는 함수만 허용한다)
-복수형(인자로 들어가는 함수개수가 2개이상)

require_POST():POST 요청만 허용
require_GET():GET 요청만 허용

-단수형(함수개수가 1개)

^ 데코레이터 함수 사용 전

^ 사용 후 (from~import~, @~):단수형

^ 사용 후 (from~import~, @~):복수형

405 method not allowed

메인페이지에서 로그인 유무에따라 다른 화면을 보여주려면?
template에서 사용할 수 있는 건
view에서 context로 넘겨준 데이터만 사용 할 수 있다.
장고에는 >>>>>
모든 template에 내가 context를 안 넘겨도
자동으로 넘어오는 context들이 있다.
->모든 template에서 항상 접근 할 수 있는 context들이 장고에 는 있다.

  • request.user: 로그인한 사용자를 가지고 있음(auth.User class의 객체instance)
    로그인하지 않았다면 AnonymousUser라는 객체instance가진다.
    로그인 했다면 해당 유저 객체instance를 가진다.

(사전적으로 Anonymous는 익명인)

---->
로그인 했다면
로그인 버튼 사라지기+로그아웃 버튼 보이기,
로그인 안했다면
로그인 버튼 보이기+로그아웃 버튼 안보이기

^ 적용한 코드

로그인한 유저만 글 작성하기


^ 적용한 코드

profile
참 쉽죠? #개발계의 밥아저씨를 꿈꿉니다⋆⁺₊⋆ ☾⋆⁺₊⋆

0개의 댓글