파이썬으로 장고(Django) 공략하기 : 입문 (1)Django 시작하기

파이썬으로 장고(Django) 공략하기 : 입문 (1)Django 시작하기

728x90

<웹의 기본 이해>

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를 출력해보자.

Views.py

이렇게, index라는 메소드에서 HttpResponse라는 클래스를 사용해

Hello World라는 문자열을 출력해본다.

이때 urls.py에서 경로를 지정해주어야 하므로 urls.py의 urlpattern에

path('', views.index, name = "index")

이 코드를 추가시킨다.

runserver 이후에 '', 즉 root url에 접근하면

Hello World가 출력되는 것을 알 수 있다.

웹 앱이 많아질 것을 고려해, 프로젝트와 웹 앱 간의 Urls.py 설계를 정리해보자.

first 웹 앱 내부에 이런 urls.py를 만든다.

여기서는 first라는 웹 앱 내부에서의 path 설정을 제어한다

그리고 이 first\urls.py를 first-django\urls.py에서 포함시키면 끝!

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' %}

이렇게 가지고 와서 사용할 수 있다.

728x90

from http://mingyum119.tistory.com/110 by ccl(A) rewrite - 2021-10-24 15:01:03