ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • python-django 간단하게 배우기
    concept/python 2020. 7. 16. 00:20

    출처 : 생활코딩, youtube OneQ

     

    장고란?

    파이썬 기반으로 작성된 웹 프레임워크

    , 파이썬 프로그래밍 언어를 기반으로 동적인 웹을 작성하는데에 있어 장고라는 기본 개념 구조 요소를 이용하여 개발하게 되는

     

    장고의 특징

    * 웹 개발에 있어서 번거로운 요소들을 새로 개발할 필요 없이 내장된 기능만을 이용해 빠른 개발을 할 수 있다는 장점이 있다.

    * MVT 패턴을 따릅니다. - M(Model), V(View), T(Template)

     

     


    웹사이트를 만들며 간단하게 db에 접근하고 쓰는 것들을 django가 알아서 해준다!

     

     

    그럼 간단하게 장고를 이용해 Create와 Read가 가능한 웹사이트를 만들어보자.

     

    먼저 장고를 설치하고 django-admin 으로 프로젝트 생성,

    DB table 생성을 위한 migration 작업이 필요하다.

    자세한 내용은 출처의 유튜브 링크 참고.

     

     

    node.js 는 0에서 모듈을 붙여서 하나하나 만들어가는 개념이라면

    django 는 만들어진 패키지들 중에서 필요한 것만 골라서 쓰는 개념이다.

     

    그래서 django-admin을 통해서 만들어진 파일들에서 필요한 파일을 수정해 웹사이트를 만들 수 있다.

     

     

    그럼 수정해야하는 파일들에 어떤 코드를 작성하면 될지 차례대로 살펴보자

     


    models

    from django.db import models
    
    # Create your models here.
    class Article(models.Model):
        name = models.CharField(max_length=50)
        title = models.CharField(max_length=50)
        contents = models.TextField(editable=True)
        url = models.URLField(editable=True)
        email = models.EmailField()
        cdate = models.DateTimeField(auto_now_add=True)

     

    models 파일 에서 model 생성

     

     

    urls

    from django.contrib import admin
    from django.urls import include, path
    from community.views import *
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('write/', write, name='write'),
        path('list/', list, name='list'),
        path('view/<num>/', view),
    ]

     

    urls 에서 실제 유저들이 접근할 수 있는 페이지 리스트 작성

     

     

    views

    from django.shortcuts import render
    from community.forms import *
    
    # Create your views here.
    def write(request):
        if request.method == "POST":
            form = Form(request.POST)
            if form.is_valid():
                form.save()
        else:
            form = Form()
        return render(request, 'write.html', {'form':form})
        
    
    def list(request):
        articleList = Article.objects.all()
        return render(request, 'list.html', {'articleList': articleList})
    
    
    def view(request, num="1"):
        article = Article.objects.get(id=num)
        return render(request, 'view.html', {'article':article})

     

    views 에서 urls에서 들어온 요청들을 받는다.

    request를 받는 함수를 작성해서 작업한다.

    render의 두번째 파라미터를 이용해 작업한 내용은 templates로 보낼 수 있고

    templates로 보낼 때는 특정 변수를 render의 세번째 파라미터로 같이 전달해서 보낼 수 있다.

    또한 이 함수에서 DB에 접근할 수 있다. (Article.objects)

     

     

    templates > write

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>write</title>
        </head>
        <body>
            <form action="" method="post">
                <!-- {% comment %}
                    {{ form.as_table }}
                    {{ form.as_p }}
                    {{ form.as_ul }}
                {% endcomment %} -->
                {{ form.as_p }}
                {% csrf_token %}
                <button type="submit" class="btn btn-primary">저장</button>
            </form>
         </body>
    </html>

     

    templates > list

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>list</title>
        </head>
        <body>
            <ul>
                <li>제목 | 저자 | 날짜</li>
                {% for article in articleList %}
                <li><a href="/view/{{article.id}}">{{ article.title }}</a> | {{ article.name }} | {{ article.cdate|date:"D d M Y" }}</li>
                {% endfor %}
            </ul>
            
         </body>
    </html>

     

    templates > view

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>view</title>
        </head>
        <body>
            제 목 : {{ article.title }}
            <br>
            저 자 : {{ article.name }}
            <br>
            내 용 : {{ article.contents }}
            <br>
            Email : {{ article.email }}
            <br>
         </body>
    </html>

     

    templates에서 html 실제로 출력될 내용을 작성한다.

    각 html 파일 코드에서 form 생성해서 쓰는 방법, 변수 쓰는 방법, form으로 list출력방법 들을 확인할 수 있다.

     

     

     

     

     


     

     

    완성된 웹사이트는 다음과 같다.

     

    http://127.0.0.1:8000/write/

     

    http://127.0.0.1:8000/list/

     

    http://127.0.0.1:8000/view/1/

    'concept > python' 카테고리의 다른 글

    파이썬에서 가상환경을 쓰는 이유  (0) 2020.07.28
    에러를 raise해서 처리하는 방법  (0) 2020.07.28

    댓글

Designed by Tistory.