-
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출력방법 들을 확인할 수 있다.
완성된 웹사이트는 다음과 같다.
'concept > python' 카테고리의 다른 글
파이썬에서 가상환경을 쓰는 이유 (0) 2020.07.28 에러를 raise해서 처리하는 방법 (0) 2020.07.28