본문 바로가기

코딩일기정리

[21.03.18]Django_STATIC,MEDIA(앱별 CSS 적용, Image의 DB)

2021-03-18

* DJANGO

  1. Django STATIC/MEDIA (CSS 주기 / 그림, 영상, 파일 DB만들고 보여주기 )

    • STATIC : 앱별 CSS 적용

    ※ 하기전에 협업을 위한 venv 복습!

    이번엔 남의 프로젝트를 가져온 뒤에 작업을 해보자 (requirements.txt)

    $ python -m venv venv : 가상환경 설치
    $ source venv/Scripts/activate : 가상환경 실행
    $ pip install -r requirements.txt

    아래 코드를 추가해 준다.
    STATIC_ROOT = BASE_DIR / 'static' : settings.py에 작성해서 사용 static 위치

    {% load static %}
    <link rel="stylesheet" href="{% static 'base.css' %}">

    이렇게 가져다가 사용한다.

python mange.py colloectstatic : static이란 폴더에 css가 다 넣어진다. (나중에 배포용에 사용됌)

  • MEDIA : 파일을 DB에 저장, Detail에 표현되게 하기
  1. models.py에서 image 추가 (DB 항목 추가)

    image = models.ImageField(blank=True)
    # blank=True : is_valid()시, 빈칸이어도 허용
    # null=False : '' 빈 문자열이 들어간다.
    # default='안녕' : 고정값 지정
  2. pip install Pillow

  3. create.html에서 form 태그 안에 enctype = "multipart/form-data" 추가 (파일 선택하여 create 할때.)

  4. views.py에서 form = ArticleForm(data=request.POST, files=request.FILES)

  5. setting.py에서

    # 사용자가 업로드한 파일을 모아 놓을 경로
    MEDIA_ROOT = BASE_DIR / 'media'  #폴더 이름에 맞게
    MEDIA_URL = '/media/'            #url 자체를 만드는 것. 추적하기 위해서?
  6. crud/urls.py에서
    "#"표시한 부분 추가... 안외워지지만 계속 보자 익숙해지게

    from django.contrib import admin
    from django.urls import path, include
    from django.conf import settings ######################
    from django.conf.urls.static import static#############
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('articles/', include('articles.urls')),
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)###########
  7. detail.html에서 img 추가
    image가 있으면 보이도록, if문 추가해서 설정할 수 있다.
    article.image.url 자체가 /media/이미지파일 이름 으로 찾아가서 가져오는 것.

    {% if article.image %}
        <img src="{{ article.image.url }}" alt="{{ article.image }}" width="100">
     {% endif %}

※ 이번주 해야할 일
: 블로그 2회 업로드 (완료). 알고리즘 문제 1개 풀기 (완료)

※ 한줄 하루 마무리
: 솔직히 잘 모르겟다.. 외우질 못하겟어.. 흐름만 이해햇다.