전체 글 56

[Django] 10 . 표준 HTML으로 만들기

책에서는 눈치챘는지 모르지만~ 으로 시작하지만 전혀 눈치채지 못 했다. 충격 표준 HTML 구조란 html, head, body 엘리먼트가 있어야하고, CSS 파일은 head 엘리먼트 안에 있어야하며 meta, title이 포함되어야 한다고한다. 이렇게 표준으로 바뀌면 중복되는 부분도 많고 수정하기위해선 하나하나 뜯어보고 고쳐야 한다. 하지만 장고는 상속기능을 제공해서 표준HTML 을 사용하고 템플릿 상속도 사용하자. templates/base.html 파일을 만들고 안을 다음과같이 채우자. {% load static %} {% block content %} {% endblock %} 엘리먼트에 block content / endblock가 있는데, 이 base.html을 상속받은 템플릿들이 저 자리를 ..

python/Django 2021.12.28

[Django] 9. 부트스트랩을 적용시키자.

웹 페이지를 더 예쁘게 꾸미기 위해서 CSS가 필수적이다. 하지만 거두절미하고 부트스트랩을 사용하면 더 편하게 꾸밀 수 있다. 우선, css파일은 모두 프로젝트 디렉터리에 static 폴더를 만들어 관리한다. static 폴더를 만든 다음 부트스트랩을 다운받자. 다음 링크에 들어가서 부트스트랩 설치파일을 내려받자. https://getbootstrap.com/docs/4.5/getting-started/download/ 다운받아서 당장은 전부 사용할 필요는 없고, bootstrap.min.css 파일만 방금 만든 static 폴더 안에 집어넣어주자. ( 다음에 사용할 수 있으니 지우진 말자 ) 그 다음 settings.py 파일을 열어서 static 경로를 추가해주자 #config/setting.py ...

python/Django 2021.12.27

[Django] 8. 답변기능 구현

URL 별칭을 통해 하드코딩을 없애주고, 질문등록과 조회기능을 구현했다. 이제 답변기능을 구현해보자. 답변기능은 question_detail.html파일을 수정하자. {{ question.subject }} {{ question.content }} {% csrf_token %} 답변등록을 통해 pybo:answer_create URL이며, question.id도 같이 보내준다. ( 아직 구현 전이다. ) form은 html에서 데이터를 모아주는 보자기라고 생각하면 된다. 이 form 안에 답변 내용을 담을 textarea를 만들어주고, 등록버튼을 통해 action에 있는 URL로 제출한다. 여기서 {% csrf_token %} 을 볼 수 있는데, 이 구문은 작성되서 전달하는 form이 실제로 웹 브라우저..

python/Django 2021.12.23

[Django] 7. URL 네이밍하기

URL 하드코딩을 없애보자. 그 전에 URL 하드코딩이란 뭘까? 우리가 만든 question_list.html에서 href태그를 한번 뜯어보자. {{ question.subject }} 이런 형태의 URL로 구성했는데, 만약 서비스를 확장하면서 question.id 앞이나 뒤에 다른 구분자 예를들면 /pybo/2/question or /pybo/question/2/ 처럼 구조를 변경했다고 치자. 그렇게되면 템플릿에 사용된 모든 href태그들을 하나하나 수정해줘야한다. 이렇게 하드코딩된 URL을 보기 쉽게 바꿔주기 위해서 URL 별칭을 사용해야한다. 간단하게 생각하면 URL을 하나의 변수로 만들어 템플릿에서 사용할 수 있도록 하는과정이다. pybo/urls.py 를 열어 수정하자. from django.u..

python/Django 2021.12.23

[Django] 6-1. 404는 어떻게 대처할까

우리도 가끔 보는 404에러 존재하지 않는 페이지에 접속하면 저 화면을 볼 수 있다. 만약 question_id에 312398등의 존재하지 않는 값을 넣어서 전달하면 404에러가 나타난다. 우리는 이 404를 좀 더 프로페셔널하게 다뤄보자. #pybo/views.py from django.shortcuts import render, get_object_or_404 # 404일 경우 from django.http import HttpResponse # http의 응답 from .models import Question from django.utils import timezone # Create your views here. # 응답 꾸러미들 ... def detail(request,question_id):..

python/Django 2021.12.22

[Django] 6. 장고 템플릿 구현

이번엔 질문과 답변을 템플릿을 이용해서 만들어보자. #pybo/views.py from django.http import HttpResponse # http의 응답 from .models import Question def index(request): ''' pybo 목록 출력 ''' question_list = Question.objects.order_by('-create_date') # -로 역순 context = {'question_list':question_list} return render(request,'pybo/question_list.html',context) # 연결되는 html, 전달할 매체 context render를 이용해서 context에 key : value로 있는 questio..

python/Django 2021.12.22

[Django] 5. 장고 Admin 활용

이전 포스팅에서는 shell을 이용해서 db에 데이터를 추가하고 삭제했다. flask를 사용하다가 장고를 사용하면서 가장 충격받았던 기능이 Admin기능인데, 관리자 계정을 추가하고 관리자 페이지로 접속하면 Admin페이지에서 데이터 추가 / 삭제가 가능하다. python manage.py createsuperuser superuser를 추가해보자. 위의 사진처럼 아이디와 패스워드를 입력해주자, 짧다고 경고문구가 나오지만 무시하고 y 입력하자. 127.0.0.1:8000/admin 으로 접속하면 다음과 같은 화면이 나온다. 아까 지정한 superuser 정보를 입력하면 접근이 가능하다. 첫 화면엔 우리가 정한 pybo 서비스가 보이지 않는다. admin페이지에서 Question를 등록해주자. from d..

python/Django 2021.12.22

[Django] 4. 장고 셸을 이용해 데이터 만들기

이전 포스팅에서 pybo 모델을 만들었다면, 이젠 데이터를 넣어줄 시간이다. 장고 프로젝트 디렉터리에서 python manage.py shell 을 입력하면 장고 셸이 실행된다. from pybo.models import Question, Answer from django.utils import timezone 파이썬과 비슷하지만 조금 다른 장고셸이다. 위와같이 임포트해주고, q = Question(subject = '', content = '', create_date = timezone.now()) q.save() 제목과 내용은 입맛에 따라 입력해주고, 저장해주면 데이터베이스에 저장된다. q.id를 입력하면 자동으로 생성되는 q의 primary key가 출력된다. 위와같은 방식으로 2~3개정도의 데이터..

python/Django 2021.12.21

[Django] 3. 모델 적용

장고가 플라스크보다 편리한 점중 하나가 바로 db를 알아서 생성해준다는 것이다. 나는 이미 어느정도 진행한 상태에서 포스트를 적느라 메세지가 뜨진 않지만, 책에 써있는대로 따라가다보면 서버를 구동시킬 때, You have 18 unapplied migration(s) ... 이런 경고메세지가 보인다. 바로 아래에 RUN 'python manage.py migrate' 라고 써 있는걸 보니 저 커맨드를 입력하면 해결되나보다. 터미널에 저 명령어를 입력하고 실행하자. 그럼 왜 저런 경고메세지가 나올까? config/settings.py 를 확인해보면, ... INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.co..

python/Django 2021.12.21

[Django] 2. 서비스 생성

책에서는 pybo 라는 이름으로 시작한다. pybo는 이름일뿐이니 원하는 서비스명을 바꿔줘도 상관없다. 장고 프로젝트 터미널에서 django-admin startapp [서비스명] 을 입력하면, 자동적으로 폴더와 다른 파일들이 생성된다. pybo라는 서비스를 만들었지만, 큰 토대만 있을 뿐, 실제로 서비스되고있는건 없다. 그렇기때문에 127.0.0.1:8000/pybo 에 접속해도 404가 뜰 것이다. 그럼 해당 url이 어떤 응답을 하도록 코드를 수정해주자. # config/urls.py # url 꾸러미들. from django.contrib import admin from django.urls import path from pybo import views # pybo의 views urlpattern..

python/Django 2021.12.21
반응형