μ μ νμΌ μ΄λ?
μ μ νμΌμ HTMLμ μ μΈνκ³ μΉ νμ΄μ§λ₯Ό λ λλ§ ν λ νμν μΆκ°μ μΈ νμΌμ μλ―Ένλ€.
μλ²μ λ°μ΄ν°λ€μ΄ μ΄λμ λ κ°κ³΅λ ν 보μ¬μ§λ λμ νμΌκ³Ό λ¬λ¦¬, μλ²μ 미리 μ μ₯λμ΄ μμ΄μΌνλ©°, μλ²μ μ μ₯λ κ·Έλλ‘λ₯Ό μλΉμ€νλ€.
μ₯κ³ μμ μ μ νμΌμ μλμ λκ°μ§ νμΌλ‘ λΆλ₯λ μ μλ€.
- Static νμΌ : μ΄λ―Έμ§, Javascript, CSSμ²λΌ κ°λ°μκ° μλ²λ₯Ό κ°λ°ν λ 미리 λ£μ΄ μ€λΉν΄ λμ νμΌλ‘, μλΉμ€ μ€μ μΆκ°λκ±°λ μμ λμ§ μκ³ κ³ μ λμ΄ μμ
- Media νμΌ : μ¬μ©μκ° μ λ‘λ ν μ μλ νμΌλ‘, νμΌ μ체λ κ³ μ λμ΄ μμ§λ§ μΈμ μ΄λ€ νμΌμ΄ μ 곡λ μ§λ μμΈ‘ν μ μμ
Static νμΌ κ΄λ¦¬
1. app ν΄λ μλ static ν΄λ μμ± ν μ΄λ―Έμ§/Javascript/CSS νμΌ μ μ₯
2. settings.pyμ static νμΌ λ±λ‘
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'μ±μ΄λ¦', 'static')
] # νμ¬ static νμΌλ€μ΄ μ΄λμ μλμ§
STATIC_ROOT = os.path.join(BASE_DIR, 'static') # static νμΌλ€μ μ΄λμ λͺ¨μ건μ§β
3. static νμΌ λͺ¨μΌκΈ°
$ python manage.py collectstatic
4. htmlμ static νμΌ λμ°κΈ°
<!-- μ΄λ―Έμ§ -->
{% load static %}
<img src="{% static 'κ²½λ‘/νμΌμ΄λ¦.png' %}" width="" height="" />
<!-- CSS -->
{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'κ²½λ‘/νμΌμ΄λ¦.css' %}" />
<!-- Javascript -->
{% load static %}
<script src="{% static 'κ²½λ‘/νμΌμ΄λ¦.js' %}"></script>
Media νμΌ κ΄λ¦¬
1. settings.py μ media νμΌ λ±λ‘
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
2. urls.pyμ media νμΌ κ²½λ‘ μ€μ
from django.config import settings
from django.config.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', home, name="home"),
...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
3. models.pyμ ν μ΄λΈ μμ media νμΌ μ λ‘λλ₯Ό μν μΉΌλΌ μΆκ°
image = models.ImageField(upload_to = "img/", blank=True, null=True)
# settings.pyμ λͺ
μλ MEDIA_URL(/media/) μμ imgλΌλ ν΄λλ₯Ό λ§λ€μ΄ κ·Έ μμ μ μ₯
4. DBμμ μννκ² μ΄λ―Έμ§λ₯Ό λ€λ£¨κΈ° μν΄ pillow μ€μΉ
$ pip install pillow
5. modelsκ° λ³κ²½λμμΌλ db.sqlite3, 0001_initial.py, 0001_initial.cpython-38 νμΌμ μμ ν ν λ€μ migration
$ python manage.py makemigrations
$ python manage.py migrate
6. html(a)μ media νμΌμ μ λ‘λ λ°μ μ μλ form μΆκ°
<form action="{% url 'urlλͺ
' %} method="post" enctype="multipart/form-data">
{% csrf_token %}
...
<p>μ¬μ§: <input type="file" name="image"></p>
</form>
7. views.pyμ ν΄λΉ ν¨μ(a)μ μ λ‘λ λ°μ media νμΌ μ μ₯μ μν μ½λ μΆκ°
new = ν
μ΄λΈλͺ
()
new.image = request.FILES['image']
8. html(b)μ media νμΌ λμ°κΈ°
<img src="{{κ°μ²΄λͺ
.image.url}}" width="" height="" />
'Backend > π΅ Django' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Django] μ₯κ³ CRUD ꡬν - κ²μν κΈ°λ₯ (2) | 2021.07.07 |
---|---|
[Django] μ₯κ³ models λ° DB μ€κ³ - Migration, Admin (1) | 2021.05.16 |
[Django] μ₯κ³ μ€μ΅/κ°λ° νκ²½ μ€λΉνκΈ° - νλ‘μ νΈ λ° μ± μμ± (0) | 2021.05.11 |