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
Author And Source
이 문제에 관하여(0824 SeSAC(새싹) 3기 9일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gordthemun/0824-SSAC싹-9일차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)