Python & Django
-
[장고 스터디 1주차] 장고 개념 정리Python & Django 2021. 9. 17. 10:04
장고는 MVC 패턴 기반의 프레임 워크 MVC 패턴이란 디자인의 패턴을 적용하여 프로젝트를 Model, View, Controller 라는 기능별 단위로 나누는 방법. 장고에서는 MTV 로 말하는데 이는 Model, Template, View 이며 MVC 와 대응됨. 장고의 구성 WSGI(wsgi.py): 웹서버 게이트웨이 인터페이스. 브라우저와 프레임워크를 연결하는 웹서버와 적절히 결합. Model(models.py): 데이터베이스와 연결하는 MANAGERS 와 연결 Middelware: 눈에 보이지 않지만 여러가지 처리를 담당. request, response, template, view middleware 가 있는데 request 는 wsgi 와 url resolution 을 연결, response..
-
[django] DetailView의 get_context_data 사용해서 객체 정보 전달하기Python & Django 2021. 9. 14. 13:08
이번 장고 프로젝트에서는 템플릿 태그를 사용하지 않고, page_title 을 만들었는데 Detail 페이지에서 page_title 을 객체의 name 으로 하고 싶었다. 이때 name 과 같이 객체의 정보를 context 로 전달할때는 get_context_data 를 사용한다. class PlayerDetailView(DetailView): model = Player template_name = "players/player_detail.html" def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['page_title'] = self.object.name ## self 는 클래스이므로 obj..
-
[django] 하나의 URL 에서 여러 페이지네이션 구현하기Python & Django 2021. 9. 10. 03:47
home 화면에 movies, books, people 각각의 페이지네이션을 구현하고자 함. 그런데 url 에 ?page= 로 페이지번호를 받아오면, movies, books, people 이 페이지가 모두 동일해져버림.. 이를 해결하기 위해 ?movie_page= 이런 식으로 각각 page 를 만들어주고, request 로 url 에서 받아옴. from django.shortcuts import render from django.core.paginator import Paginator from movies import models as movie_models from books import models as book_models from people import models as people_model..
-
[django] command 만들기 OneToOneFieldPython & Django 2021. 9. 8. 19:12
OneToOneField 에 대한 커맨드를 어떻게 만들지 고민하다가 과제 코드를 보고 확인함. ## favs/models.py from django.db import models from core.models import CoreModel class FavList(CoreModel): """ Favourite List """ created_by = models.OneToOneField("users.User", on_delete=models.CASCADE) books = models.ManyToManyField("books.Book", related_name="fav_lists") movies = models.ManyToManyField("movies.Movie", related_name="fav_list..
-
[django] 페이지네이션 구현하기(장고 Paginator)Python & Django 2021. 8. 4. 16:30
대부분의 블로그들을 보면, 게시글이 늘어나면 페이지네이션 기능을 통해 대량의 글들을 관리합니다. 장고의 Paginator 를 참고해 이를 구현해보았습니다. 여기서 원리는 url 에 ?page=2 이런 식으로 페이지 번호에 해당하는 url 을 전달하면 이를 뷰에서 받아서 page 의 값인 2에 맞는 페이지와 그에 속한 글들을 보여주는 것입니다. 그리고 다음 페이지를 누르면 url 은 ?page=3 이런 모양으로 바뀌어서 뷰에 전달될 것이고, 3에 해당하는 페이지를 보여줄 것입니다. # posts/views.py from django.core.paginator import Paginator ... def CategoryView(request, category_name): page = request.GET.g..
-
[django] 블로그 카테고리 게시판 만들기(카테고리 별 게시물 리스트, 카테고리 리스트 한 화면에 구현하기)Python & Django 2021. 8. 4. 16:00
보통 블로그나 커뮤니티를 보면 게시물이 카테고리화 되어있고, 카테고리에 들어가면 해당 카테고리의 포스팅들이 나열됩니다. 또한 카테고리 리스트도 같은 화면에 보여주는 경우가 대부분입니다. 이러한 카테고리를 가진 블로그를 만들어보겠습니다. 우선 post 모델에 Category 클래스를 추가합니다. 그리고 Post 클래스 필드로 category 를 추가해줍니다. # posts/models.py from django.db import models from django.urls import reverse from core import models as core_models from users import models as user_models class Category(core_models.TimeStampedM..
-
[Django] URL 관리하기Python & Django 2021. 6. 2. 13:37
이번에는 URL 을 프로젝트와 앱 단위로 따로 관리하는 방법을 공부해보겠습니다. 1. URL 관리 이전에 만들었던 tistory 프로젝트의 urls.py 에 가보면, blog 앱의 CRUD 를 만들면서 작성한 path 들이 죽 나열되어 있습니다. 그런데 만약 앱이 여러개가 생성되고 프로젝트가 복잡해지면 앱의 url 들을 따로 관리하는 것이 효율적일 것입니다. 2. 앱의 urls.py 만들기 우선, 앱의 urls.py 를 새로 만들고 코드를 작성해야 합니다. 저는 이전에 blog 앱을 만들었기 때문에 여기에서 진행해보겠습니다. 코드는 프로젝트 디렉토리의 urls.py 의 코드를 복붙해오면 되는데 이때 코드를 약간 수정합니다. from django.contrib import admin from django...
-
[Django] Template 상속Python & Django 2021. 6. 2. 13:17
장고에서는 템플릿을 상속하여 중복되는 코드가 없도록 관리할 수 있습니다. 이번에 템플릿을 상속하는 방법을 알아보겠습니다. 방법은 프로젝트 템플릿을 만들어 앱의 템플릿 중 중복되는 코드를 넣어 상속해주는 것입니다. 1. 프로젝트 템플릿 만들기 우선 상속을 해줄 템플릿을 만들기 위해 프로젝트 디렉토리에서 template 디렉토리를 생성하고, base.html 파일을 만들어줍니다. 그리고 그 안에 중복되는 코드들을 모두 넣어줍니다. 제 경우, html 코드와 부트스트랩의 navbar 를 넣었습니다. 이구의 블로그 ... 그리고 상속받는 템플릿의 내용이 나올 부분에 아래 코드를 넣어줍니다. 저는 네브바 하단에 넣었습니다. ... {% block content %} {% endblock %} 2. 상속받을 템플릿..