IT 공부 기록/Django 27
AskDjango - 기본편 2 : URLConf, 정규표현식
정규표현식 [] : 대괄호는 한 글자 표현을 지정할 때 사용한다.[0-9] : 한 자리의 값이 숫자인 경우[ㄱ-힣] : 한 자리의 값이 한글인 경우\d{m} : 숫자 m글자자 핸드폰 번호 검사하기1. 핸드폰 번호는 오로지 숫자로만 구성된다.2. 10 ~ 11자리의 값을 갖는다. pattern = r'^01[016789][1-9]\d{6,7}$' >>> \d는 원래 \\d와 같이 선언해야 하지만 raw를 뜻하는 r을 선언해 \(이스케이프 문자)를 한 번만 쓴다. >>> ^와 $은 정규표현식의 시작과 끝을 알린다.>>> \d{6,7}로 숫자로 구성된 6~7자리 값을 받아온다. URLConf 프로젝트/settings.py에 최상위 URLConf 모듈을 지정한다. (ROOT_URLCONF)그리고 각 앱의 url..
AskDjango - 기본편 1
장고 철학Fat Model : 풍성한 모델Stupid Templates : 비지니스 로직 내재를 지양하자.Thin View : 비지니스 로직 내재를 지양하자. 장고 기본 구조 자료 출처 : AskDjango 장고 프로젝트 프로젝트 생성$ django-admin startproject askdjango 앱 생성 $ python3 manage.py startapp blog앱 생성 후, 반드시 settings.py에 생성한 앱을 등록하는 과정을 거쳐야 한다.생성된 앱 폴더 안의 apps.py의 config 클래스를 등록해준다. 단, 앱 생성 시 쉼표를 붙여주지 않으면 장고는 위, 아래 앱 이름을 합쳐 읽으므로 주의하자.views.py에 메서드 생성 $ def post_list(request): return r..
장고를 활용한 웹사이트 만들기 - 10. Tip
템플릿 상속 script, meta 태그 등 html에서 공통 선언되는 부분을 분리해 효율을 높인다.공통 선언 부분을 모아 html에 모은다.layout.html : 공통적이지 않은 부분은 block 선언으로 처리한다. {% block content %}{% endblock %} 2. layout.html에서 선언한 부분을 제한 나머지 부분을 선언한 block 사이에 넣어주면 완료.예시 - index.html{% extends "elections/layout.html" %} {% block title %} 선거 후보 {% endblock %} {% block content %} 이름 소개 출마지역 기호 {% for candidate in candidates %} {{candidate.name}} {{ca..
장고를 활용한 웹사이트 만들기 - 9. 지지율 부분 동적으로 변경하기
지지율을 동적으로 변경해보자.지지율을 위해 results 메서드에 데이터를 가져온다. def results(request, area): candidates = Candidate.objects.filter(area = area) polls = Poll.objects.filter(area = area) poll_results = [] for poll in polls: result = {} result['start_date'] = poll.start_date result['end_date'] = poll.end_date total_votes = Choice.objects.filter(poll_id = poll.id).aggregate(Sum('votes')) # Choice 클래스에서 id에 맞는 votes를..
장고를 활용한 웹사이트 만들기 - 8. 투표결과 페이지 만들기
투표 후, finish가 뜨던 화면을 투표 결과가 출력되게 수정해보자. 투표 결과가 출력될 html 파일을 만든다.urls.py를 수정해 어떤 화면에서 투표 결과를 출력할 지 정한다.urls.py - elections기존에는 '[가-힣]+' 대신 '.+' 로 모든 문자열을 받았지만, 한글로 된 url만 받기위해 수정했다.urlpatterns = [ url(r'^areas/(?P[가-힣]+)/$',views.areas), url(r'^areas/(?P[가-힣]+)/result$',views.results), # areas/미국/results와 같은 url을 views.result에서 처리한다. ]3. 위에서 선언한 views.results 메서드를 생성하고, 투표 시, finish라는 값을 출력하던 pol..