Day 9 Django for KN

김의석 ·2024년 2월 14일

Django

목록 보기
9/39

Django for KN(Koinonia)

  • 해당 문서는 사귐의 교회 청소년부 출석부 프로젝트를 위한 Django 학습 내용과 개발 과정을 기록함

실습

  • item 목록 및 간단 검색페이지
  • 동작 정의
    • 웹에서 검색창에 데이터를 입력(get 요청)
    • 라우팅에 의해 Instagram view.py의 post_list 함수에 전달
    • Templates의 post_list.html 로직에 의해 응답값 출력

  • 웹에서 검색창에 데이터를 입력(get 요청)
    • 검색어 '두번' 입력
# Project urls.py

from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path, include
from django.conf import settings

urlpatterns = [
    path('instagram/', include('instagram.urls')),
]

# instagram urls.py

from . import views
from django.urls import path

urlpatterns = [
    path('', views.post_list),
]
  • Project urls.py과 instagram urls.py의 라우팅
# instagram.view.py

from django.shortcuts import render
from .models import Post

# Create your views here.

def post_list(request):
    qs = Post.objects.all() # QuerySet
    q = request.GET.get('q', '') 
    # 검색창에서 q로 받은 데이터 요청값
    # 여기서 ''는 'q'에 해당하는 매개변수가 없을 경우 빈 문자열을 반환하도록 지정한 것입니다.
    if q:
        qs = qs.filter(message__icontains=q) # 검색어 '두번'에 해당하는 값이 분류 됨.
    return render(request, 'instagram/post_list.html', {
        'post_list': qs, 'q':q,
        })
     
  • 라우팅에 의해 GET 요청값을 Instagram view.py의 post_list 함수에 전달 및 q에 대한 처리

    <table class="table table-bordered table-hover">
        <tbody>
            {% for post in post_list %}
                <tr>
                    <td>
                        {% if post.photo %}
                            <img src="{{ post.photo.url }}" style="width: 100px;"/>
                        {% else %}
                            No Photo
                        {% endif %}
                    </td>
                    <td>
                        {{post.message}}
                    </td>
                </tr>
            {% endfor %}
        </tbody>
    </tabel>
  • Templates의 post_list.html 로직에 의해 요청값 q를 처리하고 응답값 출력

  • 결과
profile
널리 이롭게

0개의 댓글