파이썬 웹프로그래밍 - 포토웹 만들기 (완)

채연·2024년 6월 30일
0

study

목록 보기
10/12
post-thumbnail

운영진 스터디 목표

장고를 통해 PhotoWeb 프로젝트를 완성하고 이해한다.


실행 결과

Terminal에 python manage.py runserver 명령을 입력하여 출력 결과를 확인한다.


장고 총정리

장고의 전체적인 내용을 작성한다.

(1) Django

  • Django는 웹 애플리케이션 개발을 위한 Python 웹 프레임워크이다.

(2) Django Template(템플릿)

  • 웹 애플리케이션에서 HTML을 동적으로 생성하기 위한 도구로 템플릿 언어를 사용하여 동적 콘텐츠를 생성하고 이를 HTML로 렌더링한다.

(3) Template Language(템플릿 언어)

  • 변수: {{ variable_name }}

  • 태그: {% tag_name %}

  • 템플릿 변수는 뷰에서 전달된 데이터를 템플릿에서 표시할 수 있게 한다.

  • 템플릿 태그는 논리적 구조를 제공하여 조건문, 반복문 등을 가능하게 한다.

(4) Views

  • 사용자의 요청을 통해 처리한다.
  • 모델과 상호작용하여 필요한 데이터를 조회하거나 수정한다.
  • 모델에서 가져온 데이터를 템플릿에 전달하고, 템플릿을 렌더링하여 최종 HTML 응답을 생성하여 이를 사용자에게 반환하는 역할을 가지고 있다.

(5) URL

  • URL 경로를 정의하고 해당 경로와 뷰를 연결한다.
  • 서버로 해당 주소에 할당된 리소스(HTML 페이지 또는 데이터)를 요청하는 역할이다.

(6) Models

  • 데이터베이스의 구조와 데이터 기능을 정의하는 역할이다.
  • 데이터베이스에 저장될 데이터의 형태와 관계를 정의하는 역할이다.

(7) Forms

  • 사용자가 데이터를 입력해 서버로 보내도록 도와주는 양식이다.
  • 사용자는 양식을 채우고 POST 방식으로 요청을 보내고, 서버는 해당 요청을 받아 처리한다.
  • csrf_token은 폼에 숨어있는 악의적인 코드를 사용자가 원하지 않는 글을 작성하는 보안 취약점을 방지하기 위한 보안 토큰

(8) Forms 태그 데이터 전송 방법

  • GET 방식은 입력한 데이터를 URL에 붙여 전송하는데 이는 보안에 취약하다는 특징을 가지고 있다. 하지만 전송 속도는 POST 방식보다 빠르다. (예. 페이지 이동 시 파라미터 전송)
  • POST 방식은 입력한 데이터를 본문 안에 포함해서 전송하는 방식으로 입력한 데이터가 URL에 보이지 않아 GET 방식보다 보안에 우수하다. (예. 로그인, 회원가입 등 보안이 필요한 경우)

오답노트

모르는 코드 부분을 정확히 이해하고 정리한다.

(1) 프로젝트 생성

  • 문제 :
    프로젝트를 생성할 때 django-admin startproject photoWeb . 이 작동이 안 되는 문제가 발생했다.
  • 해결 :
    python -m django startproject photoWeb . 으로 명령어를 수정해 해결했다.

(2) 날짜와 시간

  • models.py에서 날짜와 시간이 필요하기 때문에 DateTimeField 필드를 사용하려면 from django.utils import timezone을 해야 한다.

(3) 가상환경

  • 문제 :
    프로젝트와 앱을 생성하고 실행한 뒤에 models.py 코드를 작성하려고 했는데 Unresolved reference 'django' 등의 Django 관련 경고 메세지가 뜨는 문제가 발생했다.

  • 문제 해결 :
    (1) django 재설치
    pip install Django~=4.1.0

    (2) django 버전 확인
    python -m django --version

    (3) 가상 환경 설정 확인
    .\my_env\Scripts\activate

    (4) IDE 설정 확인
    File -> Settings -> Project: <프로젝트 이름> -> Python Interpreter에서 올바른 가상 환경으로 되어있는지 확인한다.

    (5) pycharm 캐시 무효화, 재시작
    File -> Invalidate Caches / Restart -> Invalidate and Restart

(4) Pillow 문제

  • 문제 :
    Django에서 이미지를 업로드하고 처리하기 위해 ImageField를 사용할 때 Pillow가 필요하다. Pillow는 이미지를 처리하기 위한 라이브러리로 pip를 통해 설치할 수 있다.

  • 오류 코드 :
    ERRORS:
    photo.Photo.image: (fields.E210) Cannot use ImageField because Pillow is not installed.
    HINT: Get Pillow at https://pypi.org/project/Pillow/ or run command "python -m pip install Pillow".

  • 문제 해결 :
    pip install Pillow 명령어를 통해 해결했다.

(5) 이미지

  • 문제 :
    python manage.py runserver를 하였을 때 이미지가 표시되지 않는 문제가 발생했다.

  • 문제 해결 :
    URL 문제로 구글을 통해 이미지 주소를 복사하여 넣었을 때 이미지가 적용이 됐다.

0개의 댓글