2-01 URL과 뷰
  1. django-admin startapp pybo
앱은 작은 기능들. pybo는 게시판 기능.
hello pybo
  1. config.urls.py에 path('pybo/', views.index) 추가.
pybo/라고 쓴 것은 장고의 url 정규화 기능 때문. pybo를 주소로 입력해도 pybo/로 자동 변환.
URL 분리
  1. config.urls에 pybo.urls의 내용을 인식할 수 있도록 include를 사용한다.
  2. pybo.urls에서는 pybo.views와 매핑을 해준다.
 
2-02 모델
장고 앱 migrate
데이터베이스가 필요한 앱만 migrate가 필요. 그래서 pybo를 입력하지 않아도 실행이 가능.
  1. python manage.py migrate을 실행하면 테이블이 생성 된다.
DB Browser for SQLite
데이터베이스 파일을 열기 위한 프로그램.
모델 작성하기
  • 속성
CharField는 길이가 제한.
TextField는 제한이 없다.
ForeignKey는 다른 모델과 연결 하기 위해 사용.
on_delete=models.CASCADE는 열결된 데이터가 삭제되면 같이 삭제 된다는 의미.
여러 속성은 django에서 찾아보자.
  • 테이블 생성하기
pybo.apps.PyboConfig을 config.setting의 installed_apps에 추가해준다.
makemigrations는 모델에 변화가 있을 때만 실행하는 명령.
innital.py가 생성 되는 이유는 테이블 작업을 수행하기 위한 작업 파일이다.
그 다음에 migrate을 실행 한다.
sqlmigrate을 사용하면 migrate을 실행 시 어떤 쿼리문이 실행 되는지 알 수 있다.
  • migrate
Question.objects.all()은 QuerySet 객체가 리턴 된다.
id는 Primary Key라고 하며 데이터의 유일한 값.
Question 모델에 __str__ 메서드를 추가하면 id값 대신 subject 값을 볼 수 있다.
def __str__(self):
return self.subject
 
모델 사용하기
데이터를 모델에 맞게 만들고 수정하고 삭제하고 가져오는 방법에 대해 배운다.
지금은 패스.
 
2-03 장고 관리자
슈퍼유저
python manage.py createsuperuser
장고 관리자 화면
/admin
모델 관리
관리하고자 하는 모델의 앱에 있는 admin.py에 입력한다.
from .models import Qustion(=클래스의 이름)
admin.site.register(Question)
모델 검색
class QuestionAdmin(admin.ModelAdmin):
search_fields = ['subject']
admin.site.register(Question, QuestionAdmin)
이렇게 입력해주면 subject를 검색할 수 있는 필드가 생긴다.
 
2-04 조회와 템플릿
질문 목록
질문 데이터 가져오기
question_list = Question.objects.order_by('-create_date')
%로 둘러 쌓인 문장을 템플릿 태그라고 한다.
질문 상세
href="/pybo/{{ question.id }}/" 이게 템플릿의 링크. 이것과 urls를 매핑 해줘야한다.
path('<int:question_id>/', views.detail) 이것이 urls의 내용.
deatil함수를 작성한다.
함수에는 데이터와 html을 리턴하도록 한다.
url을 받고 그 url에서 id번호를 받고 그 id와 같은 question 객체를 리턴한다.
오류페이지
pybo/30을 들어가게 되면 30이 존재하지 않는다고 나온다. not found가 바람직하다.
from django.shortcuts import render, get_object_or_404
위처럼 임포트해주고
question = get_object_or_404(Question, pk=question_id)
id를 pk로 고쳐준다.
**제네릭뷰**
목록 조회나 상세 조회는 특정 패턴이 있어 간략화 한  것.
 
2-05 URL 별칭
URL 하드코딩
하드코딩은 상수나 변수에 들어가는 값을 소스코드에 직접 쓰는 방식.
url 리팩토링이 번번히 발생하기에 1:1 주소 매핑 되어 있는 별칭 사용.
URL 별칭
url에 name='index' 이런식으로 별칭을 붙일 수 있다.
링크에는 이름을 넣어주면 된다.
매개변수도 전달 할 수 있다.
템플릿에서 URL 별칭 사용
잘 이해가 안가는 부분이다... 후에 다시 찾아보자.
URL 네임스페이스
별칭들이 다른 앱과 겹칠 수 있으므로 앱에서 사용하는 별칭 앞에 이름을 붙이는 것이다.
urls.py에서 app_name = 'pybo' 이렇게 정의 할 수 있다. 이게 URL 네임스페이스
당연히 썼던 별칭들 앞에 'pybo:별칭' 을 붙여 줘야 한다.
 
2-06 데이터 저장
답변 등록 폼
form밑에는 항상 csrf_token으로 보안을 유지.
웹사이트에서 작성한 데이터 맞는지 판단하는 역할.
URL 매핑
from에서 answer_create 이라는 이름으로 링크.
urls에서는 answer/create/<int:question_id>로 이동하도록 함.
뷰 함수
POST로 답변을 저장하고 보여줄 페이지를 입력해준다.
답변 저장
답변을 저장해본다.
답변 조회
답변의 갯수를 보여주고
모든 답변을 보여준다.
 
2-07 스태틱
스태틱 디렉터리
템플릿과 마찬가지로 설정해주면 된다.
스타일시트
static폴더 안에 css파일을 만들어준다.
템플릿에 스타일 적용
{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'style.css' %}">
 
2-08 부트스트랩
부트스트랩 설치
파일을 다운받고 스태틱 폴더에 넣어준다.
부트스트랩 적용
{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'bootstrap.min.css' %}">
 
2-09 템플릿 상속
표준 HTML 구조
html,head,body 엘리먼트가 있어야한다.
템플릿 상속
표준에 맞게 html을 수정할 것인데 반복작업을 안하기 위해 상속이 존재한다.
base가 표준이 되고 다른 html에 block content부터 endblock 까지 상속을 받게 된다.
style.css
내용 삭제.

'점프 투 장고~' 카테고리의 다른 글

점프 투 장고 잘 모르는 것들  (0) 2023.04.14
1장 : 장고 개발 준비.  (0) 2023.04.11

+ Recent posts