본 포스팅은 Back-end 개발 입문과 홈페이지 제작 기술 기반 마련을 위한 공부자료입니다.
Django 공식 문서와 MDN web docs를 참고자료로 작성됐습니다.
https://www.djangoproject.com/
https://developer.mozilla.org/ko/docs/Learn/Server-side/Django
# Django view function
from django.http import HttpResponse
def index(request):
# Get an HttpRequest (request)
# perform operations using information from the request.
# Return HttpResponse
return HttpResponse('Output string to return')
HttpRequest
를 받고, 형식화된 출력 HttpResponse
객체를 반환한다.urlpatterns = [
url(r'^$', views.index),
# example: /best/myteamname/5/
url(r'^(?P<team_name>\w.+?)/(?P<team_number>[0-9]+)/$', views.best),
]
HttpRequest
객체는 대상 URL, 요청 유형( HTTP GET 등 ), 요청 매개 변수, 쿠키 및 세션 데이터 등에 접근하기 위한 메서드 및 속성을 포함한다.Team
객체#best/models.py
from django.db import models
class Team(models.Model):
team_name = models.CharField(max_length=40)
TEAM_LEVELS = (
('U09', 'Under 09s'),
('U10', 'Under 10s'),
('U11, 'Under 11s'),
... #list our other teams
)
team_level = models.CharField(max_length=3,choices=TEAM_LEVELS,default='U11')
models.CharField
max_length=40
team_level
은 선택 필드로 다음을 지정함max_length=3
choices=TEAM_LEVELS
default='U11'
Django
모델은 데이터 베이스검색을 위한 간단한 쿼리를 제공한다.
다른 기준을 사용해 한 번에 여러 필드와 일치시킬 수 있다.
( e.g. 대소문자를 구분하지 않음, ~보다 큰 수 )
복잡한 명령문을 지원한다.
( e.g. “Fr”로 시작하거나 “al”로 끝나는 U11팀 찾기 )
#best/views.py
from django.shortcuts import render
from .models import Team
def youngest(request):
list_teams = Team.objects.filter(team_level__exact="U09")
context = {'youngest_teams': list_teams}
return render(request, 'best/index.html', context)
U09의 모든 팀을 보여주는 view function
team_level필드가 “U09”인 레코드 필터링 filter(team_level__exact="U09"
구체화된 “double-handlebars” 구조 허용
( { { variable_name } }
)
다향한 표현식 지원
( `{% expression %}` )
- 템플릿에서 전달된 값을 반복하는 것과 같은 간단한 조작이 가능하다.
#best/templates/best/index.html
<!DOCTYPE html>
<html lang="en">
<body>
{% if youngest_teams %}
<ul>
{% for team in youngest_teams %}
<li>{{ team.team_name }}</li>
{% endfor %}
</ul>
{% else %}
<p>No teams are available.</p>
{% endif %}
</body>
</html>
HTML 템플릿은 view에서 youngest_teams
라고 불리는 목록 변수를 전달 받는다.
해당 변수가 있는지 체크 {% if yongest_teams %}
반복문 생성 {% for team in yongest_teams %}
반복마다 팀 리스트 요소 출력 <li>{ { team.team_name } } </li>
https://developer.mozilla.org/en-US/docs/Learn/Server-side/First_steps/Web_frameworks