Study/django

    django - Questionform

    1. 질문등록 버튼생성 - 질문등록 버튼은 question_list.html에 있어야한다. {% extends 'base.html' %} {% block content %} 질문 등록하기 {% endblock %} 2. URL 매핑 pybo/urls.py 질문등록 - question/create/ 경로를 views.py에 question_create 함수에 넘김. from django.urls import path from . import views app_name = 'pybo' urlpatterns = [ path('', views.index, name='index'), path('/', views.detail, name='detail'), path('answer/create//', views.ans..

    django - StandardHTML

    1. Base.html 템플릿 파일을 만든다. 지금까지 만든 HTML 템플릿은 표준구조를 가지고 있지 않은 상태이다. 장고에서 부르는 템플릿은 파일마다 기능에 꼭 필요한 구조만 작성하고 반복되는 {% block content %} {% endblock %} css 코드도 모두 Base.html 파일 헤드태그에 넣어준다. 이때 Base.html은 템플릿폴더바로 아래에 저장한다. template/pybo 아님. template 에 저장. 아래형식만 지켜주면된다. {% load static %} {% block content %} /*--- 여기에 다른파일이 삽입되게 된다. ---*/ {% endblock %} 2. question_list.html, question_detail.html은 다음과 같이 수정하..

    django - CSS

    1. static 디렉토리 만들기 (venv)prompt> mkdir static /*--- 생략 ---*/ STATIC_URL = '/static/' STATICFILES_DIRS = [BASE_DIR/'static'] 프로젝트 루트에 스태틱 디렉토리를 만들고난후 config/settings.py 에 스태틱 디렉토리 경로를 추가해준다. static 또한 url이나 template 과 마찬가지로 pybo 앱 디렉토리 하단에 만들면 config/setting.py 수정없이 바로 쓸수 있다. 하지만 이 방법은 앞의 url이나 template 과 마찬가지 이유로 프로젝트 관리를 불편하게 만든다. static 디렉토리에는 img / javascript / css 등이 저장되고 관리된다. (마치 그래픽작업의 As..

    django - Answerform

    1. 답변등록 폼을 만든다. 답변등록폼은 질문내용하단에 달리게 된다. {{ question.subject }} {{ question.content }} {% csrf_token %} 원래 장고 개발시 form 데이터를 전송할때는 장고자체의 폼을 이용한다. 지금은 이대로 사용. {% csrf_token %} 는 form 엘리먼트를 통해 전송된 데이터가 실제로 웹브라우저에서 작성된 데이터인지 판단하는 검사기 역할을 한다. 보안관련 기능이므로 폼을 사용할때는 반드시 함께 넣어주는것이 좋다. 2. 답변등록을 위한 URL을 매핑한다. /*--- 생략 ---*/ urlpatterns = [ path('', views.index, name='index'), path('/', views.detail, name='det..

    django - Namespace

    1. URL 별칭 사용하기 from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), path('/', views.detail, name='detail'), ] pybo/url.py에 name속성을 사용해서 별칭을 만들어준다. 이렇게 수정하면 /pybo/라는 주소에는 index라는 별칭이, /pybo/2/ 라는 주소에는 detail 이라는 별칭이 생긴다. 2. 템플릿에서 별칭사용하기 /*--- 생략 ---*/ {% for question in question_list %} {{ question.subject }} {% endfor %} /*--- 생략 ---*/ 3. URL 중복방지..

    django - QuestionContent

    1. Question 모델의 id 값을 이용하여 질문내용(views.detail) 출력하기 /* pybo/url.py */ from django.urls import path form . import views urlpattern = [ path('',views.index), path('/',views.detail), ] /pybo/2/가 요청 => views.detail 함수 실행. 2. 질문내용 출력 함수(views.detail) 작성하기 /*----- 생략 -----*/ def detail(request, question_id): """ 질문내용 출력하기 """ question = Question.objects.get(id=question_id) context = {'question': questi..

    django - QuestionTitleList

    1. pybo/views.py 에서 render를 이용해 템플릿 출력 준비 /* pybo/views.py */ from django.http import HttpResponse from .models import Question def index(request): """ question_list.html (질문 리스트 출력) """ question_list = Question.objects.order_by('-create_date') context = {'question_list': question_list} return render(request, 'pybo/question_list.html', context) render 함수는 context에 있는 Question 모델 데이터 question_lis..

    django - Admin

    1. 슈퍼유저 생성. (venv)prompt> python manage.py createsuperuser 위 명령으로 슈퍼유저를 생성한다. localhost:8000/admin 으로 접속할 수 있다. 2. pybo / admin.py 를 수정하여 장고 Admin 에 질문 모델 등록하기 from django.contrib import admin from . models import Question admin.site.register(Question) 장고 admin 에 접속해보면 Question 모델이 추가된걸 확인 할 수 있다. 질문 데이터를 admin을 통해 추가할 수 있다. 마찬가지 방식으로 Answer 또한 admin을 통해 관리가 가능하다. 3. 장고 Admin 에 데이터 검색기능 추가하기 fro..

    django - DataControl

    1. 장고 쉘 실행하기 (venv)prompt> python manage.py shell 2. Question 모델 생성하기. from pybo.models import Question, Answer from django.utils import timezone q = Question(subject='pybo가 무엇인가요?', content='pybo에 대해 알고 싶습니다.', create_date=timezone.now()) q.save() q.id 위 명령을 '장고쉘'에서 한줄씩 실행시킨다. Question 모델 데이터의 id 값을 확인해보면 1이 출력되는것을 확인 할 수 있다. 이것은 데이터베이스의 pk (primary key)이며 q객체를 반복해서 생성할 때마다 값이 증가하는것을 알 수 있다. 3...