반응형

GET과 POST의 공통점서버에 Request 요청을 하는 메소드라점입니다.

 

Ex) 홈페이지에 로그인 등의 작업을 처리할때 사용자(클라이언트)가 폼을 작성후 요청(Request)하는 동작을 의미합니다.

 

GET이 POST와의 차이점클라이언트의 요청이 URL 뒤에 추가되어서 요청되는 점입니다.

 

GET 방식(가져온다) 의 특징으로는 SELECT 쿼리문과 유사한 성격을 가지며, POST보다 전송속도가 빠르다.

왜냐하면, GET 방식은 캐싱(한번 접근 후, 또 요청할 시 빠르게 접근하기 위해 데이터를 저장시켜 놓는다) 에 의하여 빠른효과를 나타냅니다.

 

ex) www.xxx.com?id=aaa&bbb=111 과 같이 작성됩니다. 

 

위 예와 같이 도메인 뒤에 ?가 붙여지며 ?  뒤는 데이터가 들어온다는 것을 의미합니다.

 

URL 형태로 출력되기 때문에 특정 페이지를 타인이 접속 가능하며, URL의 길이가 한정되어있기 때문에 보내는 양의 한계가 존재합니다.

 

반면, POST 방식(수행한다)URL이 아닌 BODY에 데이터를 넣어서 숨겨진 상태로 전송해주는 방식입니다.

보통 HTML에서 form 형태를 이용하여 submit을 사용합니다.

 

<h3> * 방명록 글쓰기 *</h3>
<form action="/guest/insertok" method="post"> <!-- 위조 방지로 다음 문장 작성 --> {% csrf_token %} 
  <table>
    <tr>
      <td>제목</td>
	  <td><input type="text" name="title" size="50"></td>
	</tr>
	<tr>
	  <td>글내용</td>
	  <td><textarea rows='5' cols='50' name="content"></textarea></td>
	</tr>
	<tr>
	  <td colspan="2" style="text-align: center;">
	  <input type="submit" value = "등록">
	  </td>
    </tr>
	</table>
</form>

위 작성한 Template 소스중 하나입니다. 여기서 제목 내용을 작성후 submit을 누르면 아래의 view를 거치도록 되어있습니다.

 

Django에서 POST 방식을 수행하고 싶은 경우, 사이버공격으로부터 방어하기 위해 Spring 프레임워크와 다르게 form 태그 끝에 {% csrf_token %} 을 작성해주어야한다.

 

csrf란 특정 사용자를 대상으로 하지 않고, 불특정 다수를 대상으로 로그인된 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록, 송금 등)를 하게 만드는 공격을 뜻합니다.

def InsertOkFunc(request):
    if request.method == 'POST':
        #print(request.POST.get('title')) # 밑과 같은 뜻
        #print(request.POST['title'])
        Guest(
                title = request.POST.get('title'), #.POST['title'],
                content = request.POST.get('content'),
                regdate = datetime.now()
                
        ).save() # ORM추가
        return HttpResponseRedirect('/guest') # 추가후 목록 보기로 돌아감
    else:
        return HttpResponseRedirect('/guest/insert')

 

View에서 POST방식으로 request 받은 내용들을 ORM 함수중 하나인 .save() 를 거쳐서 DB에 저장되도록 하였습니다.

 

반응형

'Django' 카테고리의 다른 글

[Django] URLS  (0) 2020.05.21
[Dango] DB 연결 및 Migrate  (0) 2020.05.21
[Django] Model  (0) 2020.05.20
[Django] Template  (0) 2020.05.19
[Django] View  (0) 2020.05.19
반응형

2020/05/19 - [Django] - [Django] Application

 

[Django] Application

각각의 역할에 대해 간단하게 정리한 내용은 아래 포스팅글 참고해주세요 2020/05/18 - [Django] - Django 란 ? Django 란 ? 각각의 .py 파일들이 하는 역할은 다음과 같습니다. urls.py - URL 요청을 처리, URL을.

lightchan.tistory.com

2020/05/19 - [Django] - [Django] Template

 

URLS 를 어떤 용도로 사용하는지 이전 포스팅을 참고하면 좋을 것 같습니다.

 

urls의 형태는 다음과 같습니다.

 

urlpatterns = [
    path(url경로, view, {key:values}, name),
]

path의 1번째 위치는 url경로,

2번째 위치는 출력할 view,

3번째 위치는 딕셔너리 형태인 {key:values}

4번째 위치는 장고의 위치의 상관 없이 참조할 이름을 정해줍니다.

앞의 2개는 필수지만 뒤에 2개는 옵션 선택사항입니다

 

아래 사진을 보시면 urls가 2개가 생성되어있습니다. 그 이유는 프로젝트에 여러개의 APP이 존재하는데 모든 urls의 내용을 프로젝트 root의 urls에 다 넣으면 복잡해지고 찾기 힘들어 지기 때문에 각각의 APP 안에 urls를 만들어주면 보다 더 효율적으로 사용할 수 있습니다.

 

 

프로젝트의 root urls.py 의 url 매핑을 다음과 같이 해줍니다.

urlpatterns = [
    path('admin/', admin.site.urls),
    
    path('', views.Main), # myboard의 views의 Main
    path('board/', include('myboard.urls')),

]

3번째에 작성되어있는 path 경로를 보시면 

path('board/, include('myboard.urls')) 라고 작성되어있습니다.

이 뜻은 url뒤에 board/를 만나면 myboard 폴더의 urls.py 를 찾아가는 의미가 되겠습니다.

 

 

 

반응형

'Django' 카테고리의 다른 글

[Django] GET & POST 방식 웹 출력  (0) 2020.05.21
[Dango] DB 연결 및 Migrate  (0) 2020.05.21
[Django] Model  (0) 2020.05.20
[Django] Template  (0) 2020.05.19
[Django] View  (0) 2020.05.19
반응형

앞서 포스팅한 APP 생성, Template 설정, Model 구성이 완료가 되었다면,

 

DB 설정 및 makemigrations -> migrate 과정을 수행해주도록 하겠습니다.

 

 

- makemigrations , migrate 작업

 

모델에 만든 클래스들에 맞는 스키마를 생성하고 수정 가능하도록 하기 위해 다음과 같은 명령어를 차례대로 실행합니다

해당 명령어를 수행하면 APP 하위 폴더에 있는 migrations 폴더에 파일이 생성된 것을 확인 하실 수 있습니다.

 

python manage.py makemigrations
python manage.py migrate

 

0001_inital.py

 

- DB 설정 변경

 

urls.py 로 가서 다음과 같은 부분을 변경해주도록 합니다.

 

 

ALLOWED_HOSTS = [] 부분에는 자신의 ip 또는 127.0.0.1 을 기재 해주시거나 둘다 해당 가능하게 하고 싶다면 위의 사진처럼 '*'로 해주도록 합니다.

 

INSTALLED_APPS = [] 영역에는 자신이 만든 APP 이름을 작성해주도록 합니다.

 

 

다음으로 이 부분을 수정해주도록 합니다. 현재는 프로젝트 생성시 기본을 sqlite3으로 지정했기 때문에 다음과 같이 작성되어있습니다.

 

저는 다음과 같이 수정하였습니다.

 

 

'ENGINE' 영역 mysql 또는 mariadb 인경우 저처럼 작성해주고, 오라클의 경우에는 mysql 대신 oracle이라고 작성해주시면 됩니다.

'NAME' 에는 자신이 사용할 DB명을 입력해주도록 합니다.

그 외의 것들은 생략하도록 하겠습니다.

반응형

'Django' 카테고리의 다른 글

[Django] GET & POST 방식 웹 출력  (0) 2020.05.21
[Django] URLS  (0) 2020.05.21
[Django] Model  (0) 2020.05.20
[Django] Template  (0) 2020.05.19
[Django] View  (0) 2020.05.19
반응형

2020/05/19 - [Django] - [Django] Template

 

Model이란?

 

- 장고에서 모델은 레이아웃 역할을 담당하고 있으며, 클래스로 테이블의 역할을 한다고 이해하면 될 것 같습니다.

- 해당 소스코드는 models.py 에 작성

 

다음과 같은 형태로 작성되는 것을 확인할 수 있습니다.

 

 

models에서 사용하는 대표적인 데이터 타입

CharField() 제한을 둘 수 있는 문자형 타입
'max_length = 숫자'를 입력하면 그 길이만큼 제한
TextFieldTextField() 데이터의 길이가 큰 경우 사용
IntegerField() 32비트의 정수형 형태
BooleanField() True False 의 경우 사용하며, Null은 앞에 Null을 추가해준다.
DateTimeField() 날짜와 시간 나타낼 때 사용. 날짜만 사용하고 싶다면 DateField, 시간만 사용하고 싶다면 TimeField를 사용한다.
DecimalField() 소수점을 이용해야 하는 경우 사용

 

 

반응형

'Django' 카테고리의 다른 글

[Django] URLS  (0) 2020.05.21
[Dango] DB 연결 및 Migrate  (0) 2020.05.21
[Django] Template  (0) 2020.05.19
[Django] View  (0) 2020.05.19
[Django] Application  (0) 2020.05.19
반응형

Template 란?

 

- 얻은 데이터들을 포함한 웹 HTML 파일입니다.

 

- App 폴더 밑에 "templates" 라는 폴더를 만들고 그 안에 파일(*.html)을 생성

 

- 이는 App이 1개이거나 동일 템플릿명이 없을때 사용할 수 있다.

 

 

 

 

이제 view로 가서 어떻게 데이터를 가공할 뿌려줄지 정의할 함수를 만들어줍니다.

 

형태는 다음과 같습니다.

 

def 함수명(request):
	return render(request, '템플릿파일', 'Optional로 dict type 데이터 전달')

 

템플릿에서 사용하는 것들

템플릿 변수

 

템플릿 변수는 {{  }} 의 형태로 만들어 값이 해당 위치인 {{ }} 안에서 치환되며, 변수에는 변수 혹은 객체의 속성을 가질 수 있습니다.

 Name : {{ name }}

 

템플릿 태그

 

if문의 경우

{% if 조건 %}
	소스코드
{% else %}
	소스코드
{% endif %}



for문의 경우


{% for d in data %}
	반복할 소스코드
{% endfor %}

템플릿 태그 사용 후, 해킹 방지를 위해서

 {% csrf_token %}

를 추가해주셔야 합니다

반응형

'Django' 카테고리의 다른 글

[Dango] DB 연결 및 Migrate  (0) 2020.05.21
[Django] Model  (0) 2020.05.20
[Django] View  (0) 2020.05.19
[Django] Application  (0) 2020.05.19
[Django] 프로젝트 설정 준비  (0) 2020.05.18
반응형

2020/05/19 - [Django] - [Django] Application

 

[Django] Application

각각의 역할에 대해 간단하게 정리한 내용은 아래 포스팅글 참고해주세요 2020/05/18 - [Django] - Django 란 ? Django 란 ? 각각의 .py 파일들이 하는 역할은 다음과 같습니다. urls.py - URL 요청을 처리, URL을.

lightchan.tistory.com

 

Django에서 View 역할 ?

 

- MVC 패턴의 웹 개발에서 Controller와 비슷한 역할을 합니다.

 

- View는 적절한 데이터를 모델로부터 얻어와 웹 페이지 결과를 도출할 수 있도록 컨트롤하는 역할을 한다.

 

- views.py 에 각 함수는 각각의 View를 정의해줍니다.

 

def MainFunc(request):
    return render(request, 'main.html')

 

해당 함수에서는 요청이 들어오면 'main.html'로 가도록 설정되어있습니다.

 

장고는 MTV( Model, Template, View ) 패턴을 따르고 있습니다.

 

Model

- 클래스를 만드는 역할이며, 데이터를 출력 시키는 모델을 생성합니다.

- 하나의 클래스는 DB에서 테이블 역할도 해줍니다.

 

Template

- HTML 파일로 화면에 출력해줄 웹 페이지를 해당 위치에 만들어줍니다.

 

View

- 메소드를 통하여 받으며, HTTPRequest를 받아 HTTPResponse로 응답해줍니다.

 

반응형

'Django' 카테고리의 다른 글

[Django] Model  (0) 2020.05.20
[Django] Template  (0) 2020.05.19
[Django] Application  (0) 2020.05.19
[Django] 프로젝트 설정 준비  (0) 2020.05.18
Django 란 ?  (0) 2020.05.18
반응형

각각의 역할에 대해 간단하게 정리한 내용은 아래 포스팅글 참고해주세요

2020/05/18 - [Django] - Django 란 ?

 

Django 란 ?

각각의 .py 파일들이 하는 역할은 다음과 같습니다. urls.py - URL 요청을 처리, URL을 기준으로 HTTP 요청을 알맞은 view 에 전달해주기 위해 사용합니다. 추가로, URL 매퍼(mapper)는 패턴(숫자 또는 문자)�

lightchan.tistory.com

Django에서 Project와 APP의 역할


1개의 프로젝트 안에 다양한 기능들이 있고, 기능들을 수행하는 여러개의 App으로 관리

 

 

- Django App 만드는 방법

python manage.py startapp 만들app이름

 

startapp을 통해 myapp 생성

- 만든 App을 사용 가능하게 하기

 

사용하여 '안녕하세요 Django App 사용해보기' 를 출력을 위해 views.py로 가서 다음과 같이 작성해줍니다.

 

views.py

from django.shortcuts import render

# Create your views here.
def MainFunc(request):
    return render(request, 'main.html')

그 다음 'main.html'이라는 웹에서 출력되어야하기 때문에 setting.py 와 urls.py 를 수정해줍니다.

 

 

settings.py

 

urls.py

 

 

여기서 import 추가 한 부분은 생성한 APP이름을 임포트 하고, 경로 설정은 자신이 설정한 'views.함수명'을 입력해주도록 합니다. 

 

이러한 과정이 끝나셨다면 프로젝트를 실행 후 웹에서 해당 주소를 입력후 접속하면 다음과 같이 정상 출력되는 것을 알 수 있습니다.

 

 

2020/05/19 - [Django] - [Django] View

 

[Django] View

2020/05/19 - [Django] - [Django] Application [Django] Application 각각의 역할에 대해 간단하게 정리한 내용은 아래 포스팅글 참고해주세요 2020/05/18 - [Django] - Django 란 ? Django 란 ? 각각의 .py 파일..

lightchan.tistory.com

 

반응형

'Django' 카테고리의 다른 글

[Django] Model  (0) 2020.05.20
[Django] Template  (0) 2020.05.19
[Django] View  (0) 2020.05.19
[Django] 프로젝트 설정 준비  (0) 2020.05.18
Django 란 ?  (0) 2020.05.18
반응형

이클립스로 설정을 하고 공부하기 때문에, 이클립스로 하실분들중에 준비가 되지 않으신 분들께서는 아래 글을 먼저 참고해주시기 바랍니다.

 

2020/05/06 - [python] - python - 특징 & 설치

 

python - 특징 & 설치

파이썬을 어디에 사용하면 좋을까 ? - 시스템 유틸리티 시스템 명령어를 사용할 수 있는 각종 도구를 갖추고 있기 때문에 이를 바탕으로 갖가지 시스템 유틸리티를 만들 수 있다. - GUI 화면에 또

lightchan.tistory.com

 

 

step 1

 

 

 

설정을 다 하신 후 Next -> Next -> 하시게되면 다음과 같은 창에서 Finish 를 클릭해줍니다.

 

 

 

 

프로젝트 생성을 마치시면 프로젝트 창에 다음과 같이 생성된 것을 확인하실 수 있습니다

 

 

프로젝트에서 기본적으로 사용할 명령어는 다음과 같습니다.

 

 

장고 APP 생성하는 방법

# 아나콘다와 같은 가상환경 또는 타 프롬포트를 사용할 경우

 

cd 해당 경로
python manage.py startapp 'APP이름'

ex)
cd django_practice100
python manage.py startapp myapp

 

또는 이클립스에서 사용 하는 방법

 

 

 

데이터베이스의 변경 사항 적용 방법

python manage.py migrate

 

또는 이클립스의 경우

 

 

 

장고 프로젝트 실행 방법

python manage.py runserver

 

이클립스에서 사용할 경우

 

 

반응형

'Django' 카테고리의 다른 글

[Django] Model  (0) 2020.05.20
[Django] Template  (0) 2020.05.19
[Django] View  (0) 2020.05.19
[Django] Application  (0) 2020.05.19
Django 란 ?  (0) 2020.05.18

+ Recent posts