ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Django App 생성과 등록 및 static 파일 관리
    공부 !/Django·Web 2020. 12. 14. 16:46
    반응형

    시작하기 앞서 !

    성공 화면 !

    이전 포스팅에서 로컬 서버를 띄웠다면 이번 포스팅의 준비 완료다 ( 아니라면 아래 포스팅으로 이동 ! )

    https://kangsu-2ji.tistory.com/10?category=828184

     

    Django(1) 개념 및 로컬 서버 돌리기 !

    DJANGO Django 는 쿠엔틴 타란티노 감독의 영화이다 ... 아니 정말로 Django 란 무엇일까 ? 파이썬으로 만들어진 웹 애플리케이션 프레임워크(web application framework) 이다. 쉽게 말해 빠르게 웹사이트를

    kangsu-2ji.tistory.com


    app 생성 및 등록하기

    manage.py  가 있는 디렉토리 위치에서 앱을 생성해보자.

    이때 저번 시간에 만든 가상환경 또한 활성화된 상태여야한다. ( $ source 가상환경명/Scripts/activate )

    $ python manage.py startapp testapp

     

    testapp 이라는 app 이 생성된것을 볼 수 있다.

     

     

    django 는 하나의 프로젝트 안에서 여러가지 다른 작업을 하는 app 들을 생성하고 사용할 수 있다.

    앱을 생성하면 settings.py 의 Installed_apps 에 등록해주어야한다.

    가장 하단에 생성한 앱 이름을 적어주자

     


    지금까지 장고 프로젝트의 상태 !

    작업 디렉토리를 만든 후 ( example )

    가상 환경을 생성했다. ( myvenv )

     

    장고를 설치한 이후 프로젝트를 만들고 ( exprj )

    앱을 생성한 뒤 settings 파일에 선언해주었다.  ( testapp )

     

    하나의 프로젝트 내에  다른 작업을 하는 app 을 여러개 만들 수 있다는 의미로

    도식에는 app 을 2개 그려 넣었다.  우리는 지금 testapp 하나만 만들어진 상태 !

     


    templates 생성 및 html 작성

    로켓 화면 대신 우리가 작성한 html 화면을 띄워보자.

    html 파일들을 만들면 이를 모아둘 templates 폴더를 만들면 된다.

    현재  app 내에 templates 폴더를 만들고 home.html 파일을 만들자.

     

    ctrl +  space bar 를 누른후 HTML sample 을 선택하면 html 구조가 자동 완성된다.

     

    html 의 태그들과 구조에 대해 궁금하다면 아래의 포스팅을 참고하길 바람 !

    코드는 설명하지 않고 넘어가부리기 !

    https://kangsu-2ji.tistory.com/4

    얏호라는 내용이 나올 수 있도록 작성함 !


    views.py 작성해보기 !

    작성한 html 파일을 불러오기 위해서는 views.py 함수를 작성해야한다.

    아래의 코드 블록은 요청 (request) 이 들어오면  home. html 을 보여줘 라는 의미의 함수이다.

    def home(request):
    	return render(request, 'home.html')

     

    이처럼 views.py 는 웹의 요청을 받고 전달받은 데이터들을
    해당 어플리케이션의 로직으로 가공하여 그 결과를 템플릿에 보내준다.

     

    데이터를 가공 및 처리하고 싶을땐  views.py 내에 함수를 잘 작성하면 된다.


    url 작성하기 !

    views.py 를 통해 데이터를 가공 처리한다면 urls.py 는 굳이 왜 작성해야될까 ?

     

    가공 처리한 데이터를 사용자에게 보여지는 화면인 templates 에 넘겨주는 역할을

    하기 때문에 작성해주어야한다 !

    from django.contrib import admin
    from django.urls import path
    import testapp.views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('', testapp.views.home, name= 'home'),
    ]
    

     

    ** import testapp.views 빼먹지 않도록 주의 **

    views.py 내에 작성해둔 함수를 사용하기 위해 import 해와야 한다.

     


    템플릿 상속

    중복되는 코드를 한꺼번에 관리하는 방법을 배워보자 

    사이트의 공통되는 부분들을 하나하나 작성하게 된다면 비효율적일 것이다.

    이럴때 중복되는 코드를 작성해두고 상속해서 사용하면 효율적이게 된다 !

     

    기본적인 뼈대가 되는 코드를 'base.html'  내에 작성해준다.

    base.html

    base.html 왕 ! 이라는 내용은 상속 받는 모든 html 내에 표시되게 된다.

    {% block content %} {% endblock %} 각 html 개별적으로 들어가야할 내용을 표시해주는 태그이다.

     

    base.html 을 home.html 에 표시하기 위해서는

    base.html 을 확장 사용한다는 {% extends 'base.html' %} 을 명시한 후

    위 태그 사이에 home.html 내용을 적어주면 된다.

     

    home.html

    home.html 내에 base.html 에 적어둔 코드를 확인할 수 있다 !

     

    본래 뼈대가 되는 공통적인 부분들 nav bar 등 css 적인 요소들을 base.html 에 작성하게된다.

    아직 포스팅 하지 않았기 때문에 기초적인 예시로 실습해보았다.

     


    STATIC 파일 관리하기 !

    웹 사이트 내에서 기본적으로 css, js, image 등 고정된 파일들을 갖게된다.

    이를 관리하는 방법을 익혀두자

     

    먼저 settings.py > installed_apps 내에 'django.contrib.staticfiles' 가 있는지 확인한다.

    없다면 추가하면 된다.

     

    settings.py 하단에 STATIC_URL = '/static/' 있는지 확인한다.

    없다면 추가하면 된다.

     

    위 코드 하단에 아래 코드 블럭의 내용을 적어주면 된다.

    STATICFILES_DIRS=(os.path.join(BASE_DIR, 'static'),)
    STATIC_ROOT=os.path.join(BASE_DIR, 'staticfiles')

    NameError: name 'os' is not defined

    에러가 나는 경우 settings.py 상단에 import os 를 적어주면 해결된다.

     

    app 내에 static 폴더를 만들고 img, css, js 등 사용할 상세 폴더를 만들면 된다.


    static img 파일 사용하기

    사용할 img 를 static > img 폴더 내에 업로드했다.

    html 상단에 {% load static %} 작성한 뒤 img 태그의 src 속성에 위 경로를 적어주면 된다.

    {% load static %} //html 상단에 선언 
    
    <img src="{% static 'img/cat.jpg' %}" alt="cat"> //body 태그 내에 작성


    정리

    Django 가장 기본적인 구조를 익히기 위해 튜토리얼 형식으로 실습해보았다.

    저번 포스팅에 이어서 이번 포스팅까지 django 의 기초 부분들 다루었기에

    잘 정리해두고 필요할때마다 찾아 공부하면 좋을 것 같다 !

     

     

    반응형

    댓글

Designed by SooJI