We-Co

[We-Co] Django와 흐름 이해 본문

Web

[We-Co] Django와 흐름 이해

위기의코딩맨 2023. 5. 16. 12:18
반응형

안녕하세요 위기의 코딩맨입니다.

오늘은 장고 (django)에 대해서 알아보도록 하겠습니다.

[ django ]

장고란? 장고는 python의 대표적인 MVT 패턴을 사용하는 웹 프레임 워크로 생각하시면 됩니다.

큰 장점으로는 ORM을 사용하여 DB 사용에 편리하고 개발 중심적인 프레임 워크입니다.

 

해당 프레임워크는 공식문서도 있어 사용에 도움을 얻을 수 있습니다.

 

django

* 공식문서

 

Django

The web framework for perfectionists with deadlines.

docs.djangoproject.com

[ MVT 패턴 ]

Model - View Template의 약자를 의미합니다.

 

Model : 데이터의 정보를 나타내는 소스를 의미하며, 해당 Model에 선언하고 migration을 진행하면 DB에 반영이 되며,

필드와 세부 내용을 작성하게 됩니다.

class Questions(models.Model):
    subject = models.CharField(max_length = 200)
    content = models.TextField()
    create_date = models.DateTimeField()
    def __str__(self):
        return self.subject

해당 소스는 Quetions 테이블에 subject, content, create_date 컬럼을 추가하여 생성하는 소스입니다.

 

View : View 단계는 사용자에게 데이터를 보여주는 단계입니다. 데이터를 사용하고 원하는 데이터를 사용자에게 제공하고 요청된 페이지를 응답하는 단계라고 생각하시면 됩니다.

def index(request):
    question_list = Questions.objects.order_by('-create_date')
    context = {'question_list': question_list}
    return render(request, 'pybo/question_list.html',context)

해당 소스는 Questions에 해당하는 정보를 만들이전 날짜의 역순으로 데이터를 question_list에 담고 html에 보여지도록 데이터를 보내는 단계입니다.

 

Template : MVC 중의 Control 부분으로 생각하시면 됩니다. 해당 경로에 따라 html 파일과 대응하며 요청에 따른 화면의 반응을 응답하는 단계입니다.

{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'bootstrap.min.css' %}">
<div class="container my-3">
    <table class="table">
        <thead>
        <tr class="table-dark">
            <th>Num</th>
            <th>Title</th>
            <th>Date</th>
        </tr>
        </thead>
        <tbody>
        {% if question_list %}
        {% for question in question_list %}
        <tr>
            <td>{{ forloop.counter }}</td>
            <td>
                <a href="{% url 'pybo:detail' question.id %}">{{ question.subject }}</a>
            </td>
            <td>{{ question.create_date }}</td>
        </tr>
        {% endfor %}
        {% else %}
        <tr>
            <td colspan="3">There are no registered questions.</td>
        </tr>
        {% endif %}
        </tbody>
    </table>
</div>

부트스트랩을 사용하였으며, question_list안에 있는 정보를 보여지도록 테이블단을 생성하여 넣어주는 소스입니다.

 

 

[ Urls ]

urls.py의 파일은 프로젝트 구현이 아닌, App에서 구현하게 됩니다. 서로 연관된 로직들을 그룹화하여 흐름에 따른 함수호출을 구현한 곳이라고 생각하시면 됩니다.

프로젝트 단의 urls에서 어떠한 app을 호출할 것인지 보고, 해당 app의 urls에서 view, 모델 단계를 거치는 구조로 작성됩니다.

오늘은 장고 (django)에 대해서 공부해 봤으며, MVT 패턴과 흐름에 대해서 공부해 보았습니다.

앞으로 웹 기반으로 다양한 공부르 진행해보도록 하겠습니다.

반응형