반응형
  1. Django의 templates(html)와 views.py를 이용하여 화면 생성

    • 위와 같은 화면을 표시하기 위한 프로그램 작성 방법 설명
  2. 사전 설정
    • 화면에 표현하기 위한 적당한 이미지 파일 생성 
    • 생성된 이미지를 Django가 설치된 서버로 전송
    • 개발환경에서 Static 파일(이미지, CSS 등 정적 파일 모두)을 화면에 표시하기 위해서는
    • 반드시 settings.py 파일 내에서 DEBUG = True 로 설정되어야 함
      • Django는 Development와 Production에 대한 설정 부분이 다소 혼동을 주므로 반드시 확인할 것
      • ※※※※※※※※※※※※※※※※※※※※  추후 settings.py에 대한 설명을 별도 페이지에서 작성 예정 ※※※※※※※※※※※※※※※※※※※※
  3. views.py와 Templates의 연결관계
    • Django는 Templates라는 것으로 화면을 구성할 수 있음
    • 이러한 Templates에는 화면, Html파일을 정의하며, 이 부분은 대부분 staticfiles와는 별개로 사용된다  
  4. views.py 수정
    • main 디렉토리에 있는 views.py 파일을 다음과 같이 수정
    • from django.template import loader     # template를 읽어들이기 위해 사용
    • template = loader.get_template('mainindex.html')   # mainindex.html파일을 loader로 읽어 template 객체에 저장
    • context = { 'username' : 'gunamis', }      # username에 값을 넣어서 context를 생성
    • return HttpResponse(template.render(context, request))      # context를 template객체에 전달하여 최종 html을 생성하여 Http로 Response를 함

  5. mainindex.html 작성
    • templates 폴더를 확인 ( 없으면 생성 )

    • mainindex.html파일을 생성하여 아래와 같이 작성
    • {% load static %}     # static을 로드   이미지 등 static 파일을 사용하기 위해 필요
    • {% static "main.jpg"%}   # static에 명시된 디렉토리명으로 치환 됨, /static/main.jpg
    • HTML소스를 보면 다음과 같이 치환됨

    • {% if username %}       # views.py에서 전달된 context 중 username이 있다면
    • {{ username }}              # username의 값으로 치환
    • {% endif %}                  # if문 종료

  6. 이미지 static 파일 위치
    • 개발 모드에서 Django는 static 파일의 위치가 다소 특이 함
    • 별도로 지정할 수 있을듯 하나, 본 문서에서는 기본 위치로 사용 함
    • ./py36-venv/lib/python3.6/site-packages/django/contrib/admin/static/ 위치에 파일 저장 됨 (각 개인의 환경에 따라 상이 할 수 있음)

    • 위 위치한 곳으로 main.jpg 파일을 업로드 
  7. urls.py 파일 수정
    • root의 urls.py 파일 수정
    • from django.conf import settings                             # conf의 settings 파일을 사용하기 위해 선언
    • from django.conf.urls.static import static                 # static 사용을 위해 선언
    • ]+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)        # static 파일 사용을 위해 선언
    • settings.py 파일을 보면 다음과 같이 선언되어 있음

      • 이 위치가 ./py36-venv/lib/python3.6/site-packages/django/contrib/admin/static/의 위치 임
      • DEBUG = True로 반드시 변경
    • """ ... """는 python에서 여러줄 주석 처리 하는 방법 임

  8. 실행
    • 브라우저를 실행하여 확인


반응형
    기본 URL로 접근시 접속 페이지 만들기 (main)
    • http://192.168.85.4:8080 으로 접속 시  다음과 같은 404 not found가 발생 함 
    • urls.py에 기본접속에 대한 부분이 없어 나타나는 현상

    • myweb 하위에 main 디렉토리 생성
    • 아무 내용이 없는 상태 임
    • 여기에 views.py 와 urls.py를 생성 함
    • views.py
    • urls.py

    • 상위 myweb 디렉토리 내의 urls.py를 수정
    • path('',include('myweb.main.urls')), 를 추가
    • 접속
    • 성공
    • -
  1. HTTP Exception 처리
    • URL을 처리 하는 도중발생한 에러에 대하여 처리하는 방법
    • 40x, 50x, 등의 오류 (ex: 404 - page not found 등)
    • 기본적으로 오류 발생시 나타나는 화면
    • 404 에러시
    • 처리 방법
      • settings.py를 오픈
      • 위 DEBUG = TRUE를 DEBUG = FALSE로 수정      # 오류에 대한 정보를 표시함, 따라서 실제 운영 Deploy에서는 반드시 False로 설정 필요
      • TEMPLATES = [ 를 찾아 해당 부분에 templates 위치를 삽입
      • templates를 저 위치에서 찾아 적용한다는 의미 임
      • 저장 후 닫기
      • 웹 서비스 상단으로 들어가서
      • templates 폴더를 생성
      • 404.html을 만들고 적당한 문구를 삽입하고 확인
      • 없는 링크를 호출 하여 결과 확인
      • 마찬가지로 500.html등을 생성 하면 됨.
      • 단, 500에러의 경우 Exception 처리 등을 위해서 별도 소스 작업을 할수 도 있음


반응형
    1. 생성된 myweb(App)내에 신규 app을 만들어 연결하기
    • myweb 하위에 신규 app을 생성
    • 생성명 : insidemyweb

    • myweb 안쪽을 보면 생성된 신규 insidemyweb 생성 됨
  1. 생성된 insidemyweb에 내용 설정
    • apps.py에 다음과 같이 설정 됨 (없으면 생성)
    • views.py에 아래 index()를 설정
    • urls.py에 다음과 같이 설정
  2. myweb에서 urls.py에 추가 설정
    • 기 추가되어 있는 firstworld 하위에 다음 문장을 추가
    • path('insidemyweb/', include('myweb.insidemyweb.urls')),
    • 위 문장은 URL에 insidemyweb으로 들어올 경우 myweb/insidemyweb/urls.py를 호출한다는 의미
    • 특이사항은 path를 /(slash)가 아닌 .(dot)으로 구분 함
  3. 실행