Django/INSTA

[Django] 장고 CRUD기능 중 READ - 인스타 클론코딩

씨주 2024. 1. 19. 11:45

📍 CRUD - READ

 

image같은 media file은 저장할 위치, url을 처리해줘야 한다.

 

📌 # settings.py

# 업로드한 사진을 저장할 위치
MEDIA_ROOT = BASE_DIR / 'media'

# 미디어 경로를 처리할 URL
MEDIA_URL = '/media/'

 

 

📌 # INSTA - urls.py

from django.urls import include
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('posts/', include('posts.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

위에서 지정한 설정을 urls.py에 반영해주자.

posts의 url을 읽어올 수 있도록 함께 설정해주었다.

 

모든 게시글을 볼 수 있는 index페이지를 만들어보자.

 

 

📌 # posts - urls.py

from django.urls import path
from . import views

app_name = 'posts'

urlpatterns = [
    path('', views.index, name='index'),
]

 

 

📌 # views.py

from .models import Post

def index(request):
    posts = Post.objects.all()
    context = {
        'posts' : posts,
    }
    return render(request, 'index.html', context)

 

 

📌 # index.html

{% for post in posts %}
	{% include '_card.html' %}
{% endfor %}

post 하나하나를 표시하는 _card.html을 따로 만들어서 불러오자.

 

 

📌 # _card.html

<div class="card">
    <div class="card-header">작성자</div>
    <img src="{{ post.image.url }}" alt="">
    <div class="card-body">
        <p class="'card-text">{{ post.content }}</p>
    </div>
</div>

아직 user와 관련된 모델링이 이루어지지 않았기 때문에 user 아이디를 넣을 공간에 '작성자'로 넣어두겠다.

 

 

기능 확인을 위해 admin 페이지에서 게시글을 하나 생성하였다.

 

 

image가 media폴더에 모델링할 때 지정했던 'image/%Y/%m' 폴더로 잘 저장되는 거 확인!

 

 

맛집 계정 느낌으로 분식사진을 올려봤다. (출처 pinterest) 배고파..

실행결과 작성자, 사진, content 모두 잘 나오는데 인스타의 1:1비율로 사진이 올라가질 않는다.

 

다음 포스팅에서는 사진비율을 조절해보자!