[코딩온] 장고 강좌 8

10584 단어 장고장고

장고

기본 설치

18.04 버전
apt update
apt install python3
python3 --version
pip3 install django
python3 -m django
python3 -m django --version
django-admin startproject 강의명
apt install tree
tree -

  • 앱 만들기
    django-admin startapp members
    tree .

  • 장고에 등록
    vi startups/settings.py
    INSTALLED_APPS 에 등록
    ALLOWED_HOSTS를 설정 ['*'] 는 모든 IP

  • 네트워크 관리
    man netstat
    ps -ef


앱등록하기

  • 프로젝트 url에 등록
from django.urls import path,include
urlpatterns=[
디폴트 아래의 members의 urls를 참조하겠다.
	path('',include('members.urls')),
]
  • 앱 urls에 views 등록
from django.urls import path
from . import views

urlpatterns=[
    path('',views.index)
]

  • 앱 view 만들기
    vi 앱명/view.py
from django.http.response import HttpResponse

def index(request):
	return HttpResponse("hello")

웹브라우저로 접속

u->v->m->v->t
uvmvt

템플릿 등록하기

  • 템플릿 만들기

    mkdir members/templates
    cd members/templates
    echo "

    I am groot

    " >> index.html

  • views 에 등록

    vi views.py

def signup()
  • urls.py 에 등록

html 만들기

서버에서 돌려보자

csrf(Cross Site Request Forgery Protection) 오류 : 다른 사이트에서 보내는 요청이 있을 수 있기에 이것을 받으면 안된다. 그래서 우리 사이트만의 키를 가지고 이를 막는다.

이를 위해서 form 태그 아래에 {% csrf_token %}를 삽입하자

POST 방식을 연습하기 위해 이번에는 views.py 도 수정하자

index.html 도 변경하자


이렇게 post 방식으로 보내서 내용이 바뀐 것을 확인할 수 있다.


model 다루기

모델은 DB와 ORM으로 통신하게 된다.

vi members/models.py

from django.db import models

class Members(models.Model):
	username=models.CharField(max_length=64, verbose_name="사용자")
	useremail=models.EmailField(max_length=128,verbose_name="이메일")
	Members 테이블로 나올 예정이였지만 이렇게 테이블 이름을 바꿀 수 있다.
    
	class Meta:
    	db_table="o2_users"

한다음

python3 manage.py makemigrations
으로 db에 올린다.
python3 manage.py migrate
db에 적용한다.


하면 이렇게 migrations가 있는 것을 확인할 수 있다.

그래서 migrations 내부에 있는 0001_initial.py를 확인해 보면

이와 같이 구성된 것을 확인할 수 있다.

이제는 db에 접속해 보자

sqlite3 db.sqlite3

나갈때는 .q
.schema o2_users

다시한번 모델을 수정하자

python3 manage.py makemigrations
하면 이렇게 기존 모델에 넣을지 않넣을지를 물어본다.
우리는 넣는다 1번을 골라주자

python3 manage.py migrate

이번에는 슈퍼유저를 만들자
python3 manage.py createsuperuser

또한 admin을 수정해서 유저를 추가하자

from django.contrib import admin

# Register your models here.

from .models import Members
# Register your models here.

class MembersAdmin(admin.ModelAdmin):
    #list_display = ('username','useremail')
    pass

우리가 만든 모델이 실제로 등록이 된다.
admin.site.register(Members, MembersAdmin)

그런데 이것도 마음에 안들어서 이름을 바꾸자


목록 이름도 바뀌었다.

db 다루기 2

이번에는 signup 페이지에서 입력한 내용이 db로 들어가도록 만들어 보자

먼저 index.html에서 email도 다룰 수 있게 만들자

views.py도 수정하자

등록해보면


사용자에 추가된 것을 확인할 수 있다.

한번더 views를 수정해서 정보 입력시 원래 페이지를 유지하도록 하자

이번에는 views와 html 모두 수정하자
참고로 vi 편집기 중에 다른 편집기를 띄울려면 :vs members/templates/index.html으로 띄우면 된다.

동적으로 만들기

이번에는 웹페이지가 보다 동적으로 보이도록 만들어 보자

settings.py 파일 안에 맨 아래쪽에 이렇게 적어주자

STATIC_URL = '/static/'
STATICFILES_DIRS = [
BASE_DIR / "static",
]

다시 static 폴더로 와서
curl 이미지 주소.jpg -o a.jpg

해서 주소창에 /static/a.jpg 를 치면 브라우저에 이미지가 뜬다

그래서 이걸 index.html에 넣어주면


이미지가 뜬 걸 확인할 수 있다.


좋은 웹페이지 즐겨찾기