일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- table tag
- Django column 값 가져오기
- html cell
- html
- table cell size
- Dependency Injection
- Django 특정 값 가져오기
- html cell size
- DI
- Dependency
- Django
- Spring
- Today
- Total
emluy 개발 일기
Django 웹 13 - Function CRUD (수정중) 본문
0. 기본 setting
- 프로젝트 : crud
- 앱 : classcrud, functioncrud
1. fuctioncrud 앱폴더안에 templates폴더 만들고 functioncrud폴더 만들고 index.html 만들기
- views.py랑 urls.py 기본틀 작성해주기
# fuctioncrud 앱폴더의 views.py
2. crud 프로젝트 폴더의 urls.py 작성
: functioncrud와 classcrud 각각 urls 받아오도록 include 사용하여 작성
3. Create, Read, Update, Delete 함수 url 작성
: functioncrud의 urls.py 만들고 각각 함수 작성
4. Create, Read, Update, Delete 함수 정의
: functioncrud의 Views.py에 함수 정의
5. CRUD 할 Blog class 만들기
: functioncrud의 models.py에 class Blog 정의
6. 입력받을 데이터 form 지정
: functioncrud에 forms.py 만들고 form 작성
7. Read 함수 정의
: functioncrud의 views.py에 Import 해줄거 해주기 & 함수 정의
7-1. Blog 객체 나타내기
: for문 사용
8. Create 함수
8-1. create 함수 url 정의
: functioncrud의 urls.py에 create url 정의
8-2. Create 관련 html 작성 - 새로운 데이터 입력받을 html 작성
: functioncrud의 templates에 new.html 작성
method = 'POST' : action 안써주면 자기 자신 html로 전송됨
{%crsf_token%} : 보안상 이유로 씀
{{form.as_table}} : forms.py에서 작성한 NewBlog에서 입력받을 애들을 table형식으로 보여라
8-3. Create 함수 정의 - 데이터를 입력받을 홈페이지 띄우기 & 입력받은 데이터 전송하기 (한 홈페이지에서 할 것임)
: functioncrud의 views.py에 create 함수 정의
- if else 문 사용 : request의 method에 따라 다르게 처리
if request.method == 'POST' | 메소드가 POST라면 입력한 데이터가 전달온 것이므로 저장시킨다. |
form = NewBlog(request.POST) | POST로 들어온 NewBlog형식의 request를 form 변수에 저장 |
if form.is_valid: | 유효한 값인가? |
post = form.save(commit=False) | NewBlog form 대로 post에 옮겨놓긴 해 일단! commit=False -> 근데 아 직은 save 하지마 ! 날짜 입력없잖아! |
post.pub_date = timezone.now() | 지금 시간 저장 |
post.save() | 이제 저장해 |
else : | 메소드가 GET이라면 데이터를 입력할 form을 띄운다. |
9. Delete a태그 달아서 html에 보이기
: functioncrud의 functioncrud.html에 삭제를 a태그로 나타내줌
9-1. Delete 함수 url 만들기
: functioncrud 의 urls.py에서 delete url 생성
- 특정 게시물 지울것이므로 pk 필요!!
- 이때 pk=blog.id 대신에 그냥 blog.id 적어주고 delete 함수에서 def delete(request,pk) 대신 def delete(request, blog.id)이렇게 적어줘도 됨
9-2. Delete 함수 정의
: functioncrud 의 views.py에 delete 함수 정의
10. Update a태그 달아서 html에 보이기
: functioncrud의 functioncrud.html에 수정을 a태그로 나타내줌
10-1. Update 함수 url 만들기
: functioncrud의 urls.py에서 update url 생성
- 특정 게시물 수정할 것이므로 pk 필요!!
10-2. Update 함수 정의
: functioncrud의 views.py에서 update 함수 정의
blog = get_object_or_404(Blog, pk=pk) | pk에 해당하는 Blog객체를 blog에 저장 |
form = NewBlog(request.POST, instance=blog) | 위에서 가져온 blog 에 해당하는 입력할 수 있는 입력 공간 가져와서 form에 저장 |
if form.is_valid(): form.save() return redirect('home')
|
form 입력 사항이 유효하면 저장하고 home으로 돌아가라 |
return render(request, 'functioncrud/new.html', {'form': form}) |
form 입력사항 유효하지 않으면 new.html 가서 새로운 입력 해라 |
'웹 개발 > Django' 카테고리의 다른 글
AWS 배포하기 (0) | 2020.05.18 |
---|---|
Django 웹 13 - 회원가입 로그인 (수정중) (0) | 2020.05.12 |
Django 웹 9 추가 - url 효율적인 관리 <include> (0) | 2020.05.12 |
Django 웹 11 추가사항 - (blog) 템플릿 상속 (0) | 2020.05.11 |
Django 웹 12 - (portfolio) Media 파일 업로드 (0) | 2020.05.11 |