0824 SeSAC(새싹) 3기 9일차

ORM
객체의 관계를 매핑

코드 = 디비(객체, 관계) 매핑!

매핑 => 소프트웨어적인 상황
매칭 => 소프트웨어적이 아닌 상황


데이터베이스
mysql mssql oracle


CRUD
sql문 (쿼리문) query문 질의문
C insert
R select 컬럼 from 테이블
U update
D delete


form 태그
<input type="text"
<input type="radio"
<input type="checkbox"
...
클라이언트가 서버로 정보를 전송하기 위한 form 태그를 활용하는 것이 유일하다. -> 틀린말이지만 지금은 그러려니 하자.

#반드시 form 태그 안에 있지 않아도 된다.
#input 태그는 닫지 않아도 된다.
#password는 글자가 노출되지않는다.
#라디오버튼은 하나만 선택가능, 취소 불가능 -> name이 같게 설정을 해줘야됨
#체크박스는 복수 선택 가능, 취소 가능
#placeholder 입력 전 흐리게 나타나는 글자
#value는 초기값 / value는 실제로 서버로 전송되는 값이 아니고 유저들이 식별하기 위해서 주는 것이다.
#cols는 숫자 글자, rows는 줄 갯수

#action 지정 안하면 자기 자신한테 보냄

#method의 디폴트는 get
#get 방식 : 정보를 url에 붙여서 전송하는 방식
#post 방식 : 정보를 노출되지 않도록 몰래 전송하는 방식

<form action="정보를 보낼 곳의 주소" method="정보를 보낼 방법(get/post)">
	<input type="text" name="name" value="1">
    
    <input type="password" name="pw" value="2">
    
    <input type="hidden" name="hideen" value="3">
    
    <input type="radio" name="hobby" value="4">농구
    <input type="radio" name="hobby" value="5">축구
    
    <input type="checkbox" name="subject" value="6">음악
    <input type="checkbox" name="subject" value="7">미술
    
    <select name="gender">
    	<option value="m">남성</option>
        <option value="w">여성</option>
    </select>
        
    <textarea name="letter" rows="10" style="width:100%;">안녕하세요</textarea>
    
    #type 안주면 디폴트는 submit
    <button type="submit">서브밋 버튼</button>
    <button type="button" onclick="a();">버튼</button>
</form>

post는 검색 내용을 링크로 공유할 수가 없다..
그래서 그럴 땐 get 방식을 사용한다.


앱 폴더 member 안에 models.py가 있다.

from django.db import models

# Create your models here.
# ORM의 역할 : SQL을 직접 작성하지 않아도 데이터베이스로 접근해 CRUD(조회/추가/수정/삭제)가 가능하게 해준다.

class User(models.Model):
  userid = models.CharField(max_length=64, verbose_name='아이디')
  #charField는 문자열 필드
  # max_length 최대 길이, 길이 제한
  # verbose_name : 별칭

  username = models.CharField(max_length=64, verbose_name='사용자명')
  password = models.CharField(max_length=64, verbose_name='비밀번호')
  registered = models.DateTimeField(auto_now_add=True, verbose_name='등록')
  # DateTimeField auto_now_add=True -> 자동으로 DateTime값을 넣어줌
  # 0000-00-00 00:00:00 datetime

  GENDERS = (('M','남성(men)'), ('w', '여성(women'))
  gender = models.CharField(max_length=1, verbose_name='성별', choices=GENDERS)
  # enum('M', 'W') : 둘 중에 하나를 골라라

  # TextField (문자열)
  # IntegerField (숫자열)
  # Null = True (기본값은 False) : null을 허용한다(true)
  # default

<form action="http://118.67.133.61:8000/dontgiveup/receive">
	{% csrf_token %}

	<input type="text" name="my_info">

	<button>전송</button>
</form>

장고 템플릿 언어

{ { } } -> 변수 선언
{ % % } -> 함수 ex) for문, if문 등등


실습

폼태그로 정보를 받아서 화면에 띄우기

^Croot@yookeunbyul:~/ssac-django/first_homepage# ls
db.sqlite3 first_homepage manage.py member
root@yookeunbyul:~/ssac-django/first_homepage# cd first_homepage/
root@yookeunbyul:~/ssac-django/first_homepage/first_homepage# ls
asgi.py init.py pycache settings.py urls.py wsgi.py
root@yookeunbyul:~/ssac-django/first_homepage/first_homepage# vi urls.py

프로젝트 폴더에 있는 urls.py에 들어간다.

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('yookeunbyul/', include('member.urls'))
]

member.urls로 가라고 한다.

root@yookeunbyul:~/ssac-django/first_homepage/first_homepage# cd ..
root@yookeunbyul:~/ssac-django/first_homepage# ls
db.sqlite3 first_homepage manage.py member
root@yookeunbyul:~/ssac-django/first_homepage# cd member/
root@yookeunbyul:~/ssac-django/first_homepage/member# ls
admin.py init.py models.py templates urls.py
apps.py migrations pycache tests.py views.py

member 폴더에 있는 urls.py 파일로 간다.

from django.urls import path
from . import views

urlpatterns = [
    path('ok', views.hello ),
    path('send', views.send ),
    path('receive', views.rec )
]

경로를 send와 receive 추가.
views에 send와 rec로 가라고 한다.

root@yookeunbyul:~/ssac-django/first_homepage/member# ls
admin.py init.py models.py templates urls.py
apps.py migrations pycache tests.py views.py
root@yookeunbyul:~/ssac-django/first_homepage/member# vi views.py

member 폴더에 있는 views.py 파일로 간다.

from django.shortcuts import render

#Create your views here.

def hello( req ) :
    a = 5
    b = 8
    c = a + b

    return render( req, 'a.html', {'parameter1':c, 'parameter2':'육은별'})

def send( req ) :
    return render( req, 'b.html' )

def rec( req ) :
    return render ( req, 'd.html', { 'info1':req.POST.get('name'), 'info2':req.POST .get('address') } )

views 파일 안에 send와 rec 함수 작성.
send 경로로 들어가면 b.html을 띄운다.
rec 경로로 들어가면 name이라는 info1 정보와 address라는 info2 정보를 가지고 d.html을 띄운다.

root@yookeunbyul:~/ssac-django/first_homepage/member# ls
admin.py init.py models.py templates urls.py
apps.py migrations pycache tests.py views.py
root@yookeunbyul:~/ssac-django/first_homepage/member# cd templates/

member 폴더 안에 있는 templates 폴더 안에 들어가서
b.html과 d.html을 작성한다.

#b.html
#receive로 정보가 전송
<form action="http://27.96.135.73:8000/yookeunbyul/receive" method="post">
        {% csrf_token %}

        이 름 : <input type="text" name="name">
        <br>
        주 소 : <input type="text" name="address">

        <button>전송</button>
</form>
#d.html
<html>
        <head>
                <title>회원가입 성공</title>
        </head>

        <body>
                <div>회원가입을 축하합니다</div>
                <div>이름 : {{info1}}</div>
                <div>주소 : {{info2}}</div>
        </body>
</html>

http://27.96.135.73:8000/yookeunbyul/send
http://27.96.135.73:8000/yookeunbyul/receive

좋은 웹페이지 즐겨찾기