<웹의 기본 이해>
Server : 정보를 제공하기 위해 고정된 주소를 가지고 있음. Client의 요청에 따라 적절한 정보를 전달할 수 있다.
Client : 정보를 제공받기 위하여, 서버를 찾아 접속하는 컴퓨터. 고정된 주소가 필요하지 않아 유동 IP를 사용한다.
Front-end : 사용자가 보는 화면 (HTML, CSS, JS) UI, Back-end와의 상호작용
Back-end : DB와의 통신을 담당
Server와 Client의 통신 방향
Client는 Server에 Request를, Server는 Client에 Response
<환경 구축>
Python 3.9.7
Pycharm IDE
Django
virtualenv를 사용해, 이후에 다른 프로젝트를 만들기 위해
이 프로젝트의 버전을 유지할 수 있도록 한다.
virtualenv venv (가상환경 생성, 최초 1회만 하면 됨)
cd venv\Scripts
activate (가상환경 실행)
가상환경에서 프로젝트 폴더로 이동한 다음
pip install django
django를 설치한다.
django-admin startproject (프로젝트이름) .
#현재 위치에 프로젝트를 생성할 것이다.
python manage.py runserver
#포트가 정상적으로 열리는 것을 확인
이 명령어를 통해, startproject라는 프로젝트를 생성하고
8000포트에서 서버를 실행할 수 있다.
<프로젝트 폴더 생성/웹 앱 만들기>
위에서 만든 프로젝트는 전체 프로젝트의 환경을 설정하는 역할을 한다.
실제적인 구현은 웹 앱 디렉토리에서 이루어지는데,
프로젝트 경로에서 다음을 입력해 웹 앱을 만들어준다.
python manage.py startapp first
first 웹 앱에서 Hello World를 출력해보자.
이렇게, index라는 메소드에서 HttpResponse라는 클래스를 사용해
Hello World라는 문자열을 출력해본다.
이때 urls.py에서 경로를 지정해주어야 하므로 urls.py의 urlpattern에
path('', views.index, name = "index")
이 코드를 추가시킨다.
runserver 이후에 '', 즉 root url에 접근하면
Hello World가 출력되는 것을 알 수 있다.
웹 앱이 많아질 것을 고려해, 프로젝트와 웹 앱 간의 Urls.py 설계를 정리해보자.
여기서는 first라는 웹 앱 내부에서의 path 설정을 제어한다
그리고 이 first\urls.py를 first-django\urls.py에서 포함시키면 끝!
<URL 맵핑 규칙>
path의 첫번째 인자에 url을 GET mapping을 할 수 있다.
그리고 이렇게 메소드의 매개변수에 year이라는 변수를 넣어주면 됨
<템플릿 기본 (변수 넘기기)>
settings.py의 INSTALLED_APPS의 배열에 'first', 웹 앱 이름을 추가해주면
first 내부의 template디렉터리를 인식할 수 있게 된다.
views.py에
from django.template import loader
def index(request):
template = loader.get_template('index.html')
context = {}
return HttpResponse(template.render(context, request))
이렇게 template.render 메소드를 사용해서, context내부에 있는 데이터들을 요청을 통해 넘긴다.
이렇게 path에서 정의한 name을 사용해서 template 환경에서 a 태그를 이용해 특정 url로 이동할 수 있다.
python manage.py runserver
명령어를 통해 포트를 열 수 있다.
<템플릿 조건 처리>
template html 파일에서, request로 넘어온 변수의 값이 홀수인지, 짝수인지에 따라
다른 값을 출력하도록 하는 것을 구현하였다.
for문을 써서 context로 넘어온 값들을 출력하고, 더해진 값을 출력하는 코드이다.
<스태틱 파일 띄우기>
웹 앱(first)하위에 static 폴더를 생성한다.
웹 앱 별로 구분하기 위해 static 하위에 first 폴더를 만들고 image.jpg 파일을 넣는다.
이렇게 static 키워드를 이용해 img 태그에서 작성하면 페이지에 불러올 수 있다.
alt는 이미지를 대체하는 텍스트를 의미한다.
<로또 번호 출력 페이지 만들기>
def result(request):
chosen = int(request.GET['number'])
list = []
if chosen >= 1 and chosen <= 45:
list.append(chosen)
box = []
for i in range(0, 46):
if chosen != i+1:
box.append(i)
random.shuffle(box)
while len(list) < 6:
list.append(box.pop())
context = {
'numbers' : list
}
return render(request, 'first/result.html', context)
GET 방식에 입력된 값을 제외하고 랜덤으로 값을 담아 출력하는 프로그램이다.
+
base.html에 이렇게 작성하고,
다른 template 파일에서 {% extends 'first/base.html' %}
이렇게 가지고 와서 사용할 수 있다.
'Framework > Django' 카테고리의 다른 글
MTV패턴에서 MVC패턴으로 아키텍처 변경, 기존 코드의 문제점 분석과 해결책 제시 (0) | 2021.11.04 |
---|---|
파이썬으로 장고(Django) 공략하기 : 입문 (3) Django 폼 (0) | 2021.10.24 |
파이썬으로 장고(Django) 공략하기 : 입문 (2)Django 모델 (0) | 2021.10.24 |
인프런 Django 초보 가이드 실습을 통해 알아보는 장고 입문 (0) | 2021.10.01 |