웹 8일차
--------------------정리-------------------------
[단일 페이지 작성 순서]
-예시 : 회사소개, 연혁, 조직도 등 html 페이지 하나만 만들어지는 페이지
-순서(DB처리 없는 경우) : view.py 함수생성 > templates/html 생성 > urls.py패턴정의
-순서(DB처리가 있는경우) : view.py 함수생성 > models.py 데이터(CRUD) > templates/html 생성 > urls.py 패턴정의
- -순서(DB+파라메터가 있는경우) : view.py 함수생성 > 파라메터 받기 (POST or GET) >
models.py 데이터(CRUD) > templates/html 생성 > urls.py 패턴정의
[연속 페이지 작성 순서]
- 예시 : 게시물, 회원관리, 상품조회 등등 (페이지가 계속 이벤트(버튼)을 통해 연결되는 페이지들 )
-순서(파라메터가 있는경우 최초(목록)페이지 ) : view.py 함수생성 > 파라메터 받기 (POST or GET) >
models.py 데이터(CRUD) > templates/html 생성 > urls.py 패턴정의
:html페이지에서 > 다음페이지로 연결할 url패턴을 정의(클릭 이벤트)
(보통 버튼 처리가 추가되면서다음페이지 url 패턴 명시)
-순서(html페이지를 만들지 않아도 되는경우) :view.py 함수생성 > 파라메터 받기 (POST or GET) >
models.py 데이터(CRUD) >
view.py함수 내에서 자바스크립트 문자열로 생성 (url패턴정의)
HttpResponse()를 통해 처리
---------------------------이벤트 처리 방법 --------------------------------
[페이지 전환]
- <input type="button" value="보여지는값" onclick="자바스크립트 함수명()">
- - <input type="submit" value="보여지는값">
- <button onclick="자바스크립트 함수명()">보여지는값<button>
- <a href="javascript:자바스크립트 함수명();">보여지는값</a>
- <a href="url패턴">보여지는값</a>
[데이터 전송(파라미터 전송) method-> POST or GET]
-<POST방식>
-<form id="사용할 아이디이름" method="POST or GET" action="url 패턴"> 태그 안에서 아래 작성
- <input type="hidden or text" name="전송할 이름(key값)" value="입력한 값">
<select name="전송할 이름(key값)"><option value=""></option></select>
<textarea name="전송할 이름(key값)">value값</textarea>
<input type="checkbox or radio" name="전송할 이름(key값)" vlaue="입력한 값">
-사용하는 클릭이벤트: <input type="submit" value="보여지는값">
<GET 방식>
1. 입력 또는 수정 값이 없는 경우(삭제 또는 페이지만 전환하는 경우)
(자바스크립트 함수에서 사용시)
-location.href = "url패턴?name&value=name2&value2&.....";
(a 태그 이용시)
-<a href="url패턴?name=value&name2=value2">보여지는값</a>
2. 입력 또는 수정이 있는 경우
(form태그 + input(submit)버튼 사용)
-<form id="사용할 아이디이름" method="GET" action="url 패턴"> 태그 안에서 아래 작성
<input type="hidden or text" name="전송할 이름(key값)" value="입력한 값">
<select name="전송할 이름(key값)"><option value=""></option></select>
<textarea name="전송할 이름(key값)">value값</textarea>
<input type="checkbox or radio" name="전송할 이름(key값)" vlaue="입력한 값">
-사용하는 클릭이벤트: ="submit" value="보여지는값">
(form태그 +버튼 - 자바스크립트 호출방식 사용)
-<form id="사용할 아이디이름" method = "GET" action="#">태그 안에서 아래 작성
-사용하는 클릭이벤트: : <input type="button" value="보여지는값" onclick="자바스크립트 함수이름()">
:<button onclick="자바스크립트 함수이름()">보여지는값</button>
- 자바스크립트에 함수 정의
fn = document.getElementByld("form태그 아이디 이름");
mem_id = fm.mem_id.value;
url = "/oracle/mem/_view/?mem_id=" + mem_id;
location.href=url;
-----------------------------models.py사용방법 -------------------------
1.설정 하기
- config/settings.py에서
>DATABASES ={"사용할DB별칭(oracle)" : { 접속 정보 작성 } ,
{"사용할DB별칭(mysql)" : { 접속 정보 작성 } , }
>DATABASE_ROUTERS = ["사용할앱이름(oracleapp).router.DBRouter",
["사용할앱이름(secondapp).router.DBRouter", ]
:router => router.py 파일을 의미
:DBRouter =>router.py내에 class를 의미함
-사용할app(oracleapp)에서
>router.py파일 추가하기
>router.py내에 : app_label의 값은 "사용할app이름(oracleapp)"으로 수정
:return 값은 "사용할DB별칭(oracle)"으로 수정
-사용할app(secondapp)에서
>router.py파일 추가하기
>router.py내에 : app_label의 값은 "사용할app이름(secondapp)"으로 수정
:return 값은 "사용할DB별칭(mysql)"으로 수정
2.model.py 파일 내에 사용할 테이블이름으로 클래스 생성하기
- 클래스 이름은 : 실제 DB에 존재하는 Table이름과 동일하게 (첫글자는 대문자로 시작)
- 클래스 아넹 변수들 : 실제 Table 내에 존재하는 컬럼명과 동일하게 변수 선언
:Type, size(maxlength),null여부 등도 실제 컬럼명의 정보와 동일하게..
-내부 Meta 클래스 작성 : 클래스 안에 클래스를 넣는 방식(내부클래스)
> 실제 테이블 이름 정의 : db_table = "실제테이블이름(member)"
> 사용할 앱 이름 정의 : app_label = "형재위치한 app이름(oracleapp)"
> 실제 테이블 존재여부 : managed = 존재여부(False or True)
--> 일반적으로 테이블을 만들어 놓고진행하기 때문에... False 지정
- class 하나 생성시 구조(회원 테이블을 샘플로)
class Member(models.Model) :
컬럼 = CharField(mex_length=11, null=False)
class Meta :
db_table = "member"
app_label = "oracleapp"
maneged = False
3. 컴파일 시키기 : model.py와 실제 DB의 Table과 소통하기 위한 언어로 변환하기
==> 프롬프트 창에서 진행
>python manage.py makemigrations 현재app이름(oracleapp)
>python manage.py migrate
==> 최초에 class가 생성되면 무조건 위 명령 실행 해야 합니다.
==> 이후 새로운 class가 추가되는 경우에도 위 명령 실행해야 합니다
==> 이미 명령이 실행된 class 내에서 일부 변경 사항이 일어나는 경우에는
-> 위 명령은 실행 안해도 일반적으로 적용이 되지만, 안되는 경우에는 위 명령을 실행해야함
==> 위 명령 실행 중 오류 발생이 나는경우
->해당app내에 폴더 이름중 : migrations 폴더 내에 파일명 앞에 000이라는 숫자가 있는 파일 삭제
:migrations/__pycache__폴더 내에 파일명 앞에 000이라는 숫자가 있는 파일 삭제
-> 위의 해당 파일 삭제 후 다시 위에 명령 실행
-> 삭제할 때 겁먹지말기 !!!
------->>ORM방식으로 데이터베이스를 처리할 경우에는 위의 설정부터 model.py 파일 사용해야함
>Objects Relations Manage : 객체(class) 방식
---------------oracleapp에서 ----------------
* cart 테이블 형상 만들기 : models.py에서 진행
> python manage.py makemigrations oracleapp
> python manage.py migrate
--------------------------------------------------
*주문(장바구니)정보 전체 조회하기
-views 함수명: getCartList()
-/cart/cart_list.html 생성
-url 패턴 : cart_list
*주문(장바구니)정보 상세정보 조회하기
-views 함수명: getCartView()
-/cart/cart_view.html 생성
-url 패턴 : cart_view
*주문(장바구니)수정하기 폼 가기
-views 함수명: getUpdateForm()
-/cart/cart_update_form.html 생성
-url 패턴 : cart_update_form
-수정 컬럼 :주문수량
---------------------------------------------
* 주문(장바구니) 수정처리하기
- views 함수명 : getCartUpdate()
- HttpResponse()로 처리
- url 패턴 : cart_update
*주문(장바구니)삭제하기 처리하기
-views 함수명: getCartDelete()
-HttpResponse()로 처리
-url 패턴 : cart_delete