1.파이썬 설치
- www.python.org에서 다운로드 메뉴 - Python 3.5이상 선택해서 다운로드
- 설치 과정에서 Add Python 3.5 to Path 반드시 체크
- 설치 확인
윈도우키 + R을 눌러서 나오는 창에 powershell이라고 치고, 확인을 눌러서 powershell실행
powershell화면에서 python이라고 입력해서 오류가 나오지 않으면 설치 성공
2.저장한 코드 실행방법
Python test.py
3.Django 설치
- 플랫폼에 따라서 Django를 설치하는 방법이 다릅니다.
- 윈도우 - powershell에서
> pip install django
4.Django 프로젝트 만들기
- Django 프로젝트 생성
프로젝트를 만들고자 하는 폴더로 이동
django-admin startproject <프로젝트이름>
- Django 서버 실행
앞에서 생성했던 <프로젝트이름> 디렉토리로 이동
python manage.py runserver
- Django 서버 접속
웹브라우저(IE, chrome, firefox, safari, opera 등) 실행
주소창에 127.0.0.1:8000 또는 localhost:8000 입력 -> It Worked! 화면이 나오면 성공
- Django 서버 중단하기
Ctrl+C
5.hello world 출력하기
- app 만들기
프로젝트 폴더로 이동
python manage.py startapp <앱이름>
ls 명령어를 치면 <앱이름>이라는 디렉토리가 생성되어 있음
- hello world를 출력하는 index 함수 만들기
앞에서 생성한 <앱이름> 폴더로 이동
views.py(\프로젝트이름\앱이름\views.py) 수정 - 페이지 요청에 대해 hello world라는 httpResponse
- 앱에 접근할 조건을 지정하는 함수 만들기
\프로젝트명\프로젝트명\urls.py에 urlpatterns 수정
- 앞서 생성한 index 함수를 실행할 조건을 지정하는 함수 만들기
앞서 생성한 <앱이름> 폴더로 이동
urls.py(\프로젝트이름\앱이름\urls.py) 파일 생성
urls.py에 urlpatterns로 index함수를 지정
#참고
app - 웹사이트를 기능별로 분류해놓은 단위
urlpatterns - 서버에 요청이 들어온 경우, 담당자를 지정하는 역할. url(주소, 주소에 접속하면 실행될 명령어)
include - 앱 접속을 위해 씁니다.
6.app과 관련된 정보를 저장할 model
- 모델클래스는 앱 안의 models.py에 정의합니다.
- 모델 class는 models.Model을 상속받아야 합니다.
- 모델 class안의 멤버 변수의 field에 대한 정보는 Field types를 참고해주세요
#참고
django에서 보통 model이름은 대문자로 시작하고, 단수형으로 씁니다.
# C:\Code\mysite\elections\models.py
class Candidate(models.Model):
name = models.CharField(max_length=10)
introduction = models.TextField()
area = models.CharField(max_length=15)
party_number = models.IntegerField(default=1)
7.모델을 DB에 저장하기 위한 준비 과정
- mysite/settings.py - INSTALLED_APPS 리스트에 elections(앱이름) 추가
- app폴더/models.py - 테이블 작성
- app폴더/admin.py - 티이블 등록
- mysite 폴더로 이동 후 python manage.py makemigrations 입력
- python manage.py migrate로 DB에 공간 만들기
(수정후 DB초기화 이후 다시 migration하기)
- (root) db.sqlite3 - 삭제
- (root\app\migrations) __init__.py 빼고 다 삭제
- python manage.py makemigrations
- python manage.py migrate
- (admin 등록) python manage.py createsuperuser
8.admin으로 접속
- admin 사용자 만들기
프로젝트 폴더로 이동
python manage.py createsuperuser 실행
유저 이름과 email, password 설정
- 서버 실행
python manage.py runserver
- admin으로 접속
브라우저에서 admin:localhost:8000/admin으로 접속
1에서 만든 사용자로 접속
9.Candidate 등록
- app폴더의 admin.py에 model에서 정의한 Candidate를 regist
- 브라우저를 새로고침 하면 Candidate가 반영됩니다.
- Candidate - ADD CANDIDATE - 내용을 추가하고 SAVE -> object가 추가됩니다.
10.object를 구분하는 방법
- python에서는 object를 표현하는 문자열을 정의할 때는 __str__메소드를 오버라이딩합니다. 예를 들어 위에서 등록한 Candidate의 이름으로 object를 표현하고 싶은 경우,
from django.db import models
class Candidate(models.Model):
...
def __str__(self):
return self.name #object를 출력하면 name이 보입니다.
로 수정한 후, 브라우저를 새로고침 하면 후보자 이름이 보입니다.
11.SHELL - 직접 DB에 요청을 하는 다른 방법
- shell 실행 방법
windows - powershell에서
manage.py가 있는 폴더로 이동 후
python manage.py shell
#소스
>>> from elections.models import Candidate
>>> Candidate.objects.all()
[<Candidate: 힐러리>, <Candidate: 트럼프>]
>>> new_candidate = Candidate(name = "루비오")
>>> Candidate.objects.all() #아직 "루비오"가 DB에 저장되지 않음.
[<Candidate: 힐러리>, <Candidate: 트럼프>]
>>> new_candidate.save() # 이제 "루비오"가 DB에 저장되었습니다
>>> Candidate.objects.all()
[<Candidate: 힐러리>, <Candidate: 트럼프>, <Candidate: 루비오>]
>>> no1 = Candidate.objects.filter(party_number = 1)
>>> no1
[<Candidate: 힐러리>]
>>> no1[0].party_number
1
>>> no1[0].name
'힐러리'
>>> no1[0].introduction
'미국 최초의 여자 대통령이 되겠습니다.'
12.템플릿 추가하기
- 앱(elecetions) 폴더 아래에 templates 폴더 생성 (C\Code\mysite\elections\templates)
- templates 폴더 아래 elecetions 폴더 생성(C\Code\mysite\elections\templates\elections)
- elecetions 폴더 아래 index.html 파일 생성 (C\Code\mysite\elections\templates\elections\index.html)
13.MVC 패턴(Model View Controller Pattern)
조율, 데이터, 화면으로 프로그램을 구성하는 방식
- Model(데이터) - models.py
Candidate 클래스의 형식대로 데이터를 DB에 저장, 불러옴
- View(화면) - templates
화면에 어떤 장면을 보여줄지를 결정
- Controller(조율) - views.py
Candidate 모델에서 데이터를 읽어, index.html에 전달
14.필드 클래스 설명
- DateTimeField
date(날짜)와 time(시간)을 나타내며, python의 datetime.datetime 인스턴스로 표현됩니다.
- CharField
string을 나타내며, 필수 인자 max_length가 있습니다.
길이가 긴 문자열을 저장하려면 TextField 등을 쓰세요.
CharField.max_length : 해당 필드의 최대길이를 설정합니다. 예를 들어 5로 설정하면 5글자 이하로만 저장할 수 있습니다.
- IntegerField
정수를 나타냅니다.
이 필드는 Django가 지원하는 모든 데이터 베이스에서 -2147483648에서 2147483647까지의 정수를 안전하게 저장합니다.
더 큰 정수는 BigIntegerField 등을 이용하세요.
- ForeignKey
한 모델에서 다른 모델을 이용할 때에 씁니다(보통 many-to-one 관계 모델에서 이용합니다).
15.크롤링
- BeautifulSoup 설치
pip install beautifulsoup4
- requests 설치
pip install requests