[Django] CRUD 만들기
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
[Django] CRUD 만들기
[Django] CRUD 만들기
* python 프로젝트 기본 setting 하는 법
1. Django Project 생성
2. migrate 를 해준다.
3. static 폴더와 templates 폴더를 만든다.
4. settings.py => static 폴더와 templates 폴더 설정
1.
프로젝트 생성 후 가장 먼저 migrate를 해줘야한다.
2.
프로젝트에 templates, static 폴더 만들기
3.
settings.py에 설정하기
- TEMPLATES 위에 넣기
1 2 #프로젝트의 templates 폴더의 절대 경로 얻어와서 tempDir = os.path.join(BASE_DIR, "templates" ) cs
- 맨 아래에 넣기
1 STATICFILES_DIRS = (os.path.join(BASE_DIR, "static" ),) cs
- Language, Time_zone 수정하기
1 2 3 LANGUAGE_CODE = 'ko' TIME_ZONE = 'Asia/Seoul' cs
*출력 결과
[super user만들기]
1.
2.
3.
4.
[CRUD 생성 setting 하기]
1.
- package 만드는 개념과 비슷하다.
- 패키지에서 마우스 우클릭 - Create application을 누른 뒤 이름을 member로 하여 생성한다.
2.
모델 설정
1 2 3 4 5 6 7 8 9 10 # 회원정보를 관리할 모델 설정 # Member 모델 정의 class Member(models.Model): # num 필드 설정 (자동 증가되는 primary key 값) num = AutoField(primary_key = True) # name 필드 설정 (최대 길이 : 30, null 허용하지 않음) name = CharField(max_length = 30 , null = False) #null을 허용하지 않겠다. # addr 필드 설정 (최대 길이 : 50, null 허용) addr = CharField(max_length = 50 , null = True) #null을 허용하겠다. cs
3.
admin.py
1 2 3 4 5 6 7 8 9 10 11 12 13 #-*- coding: utf-8 -*- from django.contrib import admin from member.models import Member # Register your models here. # 관리자 모드에서 관리할 모델정보 설정 class MemberAdmin(admin.ModelAdmin): # num, name, addr 필드를 볼 수 있도록 설정 list_display = ( 'num' , 'name' , 'addr' ) # 등록하기 admin.site.register(Member, MemberAdmin) cs
4.
member를 추가한 후 settings에 추가
1 2 3 4 5 6 7 8 9 10 11 # Application definition INSTALLED_APPS = [ 'django.contrib.admin' , 'django.contrib.auth' , 'django.contrib.contenttypes' , 'django.contrib.sessions' , 'django.contrib.messages' , 'django.contrib.staticfiles' , 'member' , # 만든 application 의 이름 설정 ] Colored by Color Scripter cs
5.
make migration-migrate 연속으로 해준다.
6.
views.py 만들기
1 2 3 4 5 6 7 #-*- coding: utf-8 -*- from django.shortcuts import render def index(request): # templates/index.html 을 읽어서 출력하도록 return render(request, 'index.html' ) Colored by Color Scripter cs
7.
url
1 2 3 4 5 6 7 from Step03_CRUD import views urlpatterns = [ url(r '^admin/' , admin.site.urls), url(r '^$' , views.index) ] Colored by Color Scripter cs
8.
templates에 index.html 생성하기
9.
member 어플리케이션에 urls 생성하기
10.
메인 urls에 요청 목록 추가하기
- member로 시작하는 요청은 member.urls로 넘겨주기
1 2 3 4 5 6 7 urlpatterns = [ url(r '^admin/' , admin.site.urls), url(r '^$' , views.index), # /member/ 하위 요청을 처리할 urls.py 설정 url(r '^member/' , include( 'member.urls' )), ] Colored by Color Scripter cs
11.
member urls에 패턴 추가하기
1 2 3 4 5 6 7 8 9 10 11 urlpatterns = [ url(r '^list/' , ), url(r '^insertform/' , ), url(r '^insert/' , ), url(r '^delete/' ,), url(r '^updateform/' , ), url(r '^update/' , ), ] cs
12.
member views에 추가하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 from django.shortcuts import render # Create your views here. def list(request): pass def insertform(request): pass def insert(request): pass def delete(request): pass def updateform(request): pass def update(request): pass Colored by Color Scripter cs
13.
views 에 def list 작성하기
- 직접 sql문을 작성할 필요가 없다는 것이 특징.
- Member 모델의 모든 데이터를 가지고 온다.
1 2 3 4 5 6 7 8 def list(request): # Member 모델의 모든 데이터를 가지고 온다. member_list = Member.objects.all().order_by('num') return render( request, 'member/list.html' , { 'member_list' :member_list}, ) Colored by Color Scripter cs
[insert]
1.
insertform.html 생성
2.
insertform 과 insert def 작성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 def insertform(request): return render(request, 'member/insertform.html' ) def insert(request): # post 방식 전송되기 위해서는 form 안에 {% csrf_token %} 작성 # post방식 전송되는 파라미터추출해서 Member 모델 객체 생성 mem = Member( name = request.POST.get( "name" ), addr = request.POST.get( "addr" ), ) # DB에 반영 mem.save() # 리다일렉트 이동하라고 응답 return HttpResponseRedirect( '/member/list/' ) Colored by Color Scripter cs
3.
보안 관련 오류- Forbidden : CSrf 검증에 실패했습니다. 요청을 중단하였습니다. 오류
해결방법
- 아래와 같이 {% csrf_token %} 을 추가해준다.
[Delete]
1.
html에 delete버튼 생성하기
2.
views
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 def delete(request): # get 방식 전달되는 삭제할 번호 얻어오기 #num= request.GET.get("num") # 삭제하기 #mem=Member.objects.get(num=num) #mem.delete() # 위의 작업을 한줄로 표현하면 ... Member.objects.get(num = request.GET.get( "num" )).delete() #return HttpResponseRedirect("/member/list/") return render( request, 'member/alert.html' , { "msg" :u "삭제 했습니다." , "url" : "/member/list/" , }, ) Colored by Color Scripter cs
3.
alert.html생성하기
[Update]
1.
html 에 수정버튼 생성하기
2.
views
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 def updateform(request): # get 방식 전달된 수정할 회원의 번호를 이용해서 회원 정보를 얻어온다. member = Member.objects.get(num = request.GET.get( "num" )) # member 는 dict type 이다. return render( request, 'member/updateform.html' , { "member" :member} ) def update(request): member = Member( num = request.POST.get( "num" ), name = request.POST.get( "name" ), addr = request.POST.get( "addr" ), ) # .save() 메소드는 data 가 있으면 수정 반영, 없으면 insert member.save() return render( request, 'member/alert.html' , { "msg" :u "수정했습니다." , "url" : "/member/list/" }, ) Colored by Color Scripter cs
from http://heekim0719.tistory.com/160 by ccl(A) rewrite - 2020-03-06 22:20:40
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
댓글
댓글 쓰기