Link
12-03 07:17
«   2020/12   »
    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    
Archives
Today
391
Total
1,187,542
관리 메뉴

꿈 많은 사람의 이야기

파이썬 django를 활용한 todo 게시판 만들기 - 9편. 일정에 날짜 값 삽입 본문

python-django

파이썬 django를 활용한 todo 게시판 만들기 - 9편. 일정에 날짜 값 삽입

이수진의 블로그 이수진의 블로그 2019. 6. 11. 09:54

완성된 코드는 아래 github 주소에 있습니다!

도움이 되셨다면 좋아요와 깃허브 스타를 눌러주세요! 저에게 있어 큰 힘이 됩니다 ㅠㅠhttps://github.com/lsjsj92/django_todo_app

 

 

지난 포스팅에서 python django를 활용하여 게시판 만들기

todo 게시글 추가, 상세보기, 수정, 삭제를 만들었습니다

근데 아직 일정에 date 값을 넣지 못했는데요

todo list에서 마감 시간까지 넣을 수 있는 end date 값을 넣을 수 있게 해봅니다

 

보통 일반적으로 bootstrap(부트스트랩) 등을 이용해서 date 정보를 input하려고 하면

calcalendar를 만들거나 하는 등으로 날짜를 입력 받을 수 있게 구현을 해줘야합니다.

이게 말이 쉽지 결코 쉽지 않습니다. 어떤 날짜는 28일이고 어떤 날짜는 30일이고 31이고 다 다르기 때문이죠

또한, ui로 만들어줘야 사용자가 쉽게 이용할 수 있습니다. 이런 것들이 조금 힘들죠

하지만 django에서는 이러한 date input을 쉽게 해줍니다

DATE_INPUT_FORMAT을 이용하면 됩니다

setting.py에다가 DATE_INPUT_FORMATS를 해줍니다

그러면 DATE를 입력 받는 장소가 아래 사진처럼 될 것입니다

 

 

 

이렇게요! 정말 신기하지 않나요

장고의 강력함이라고 생각할 수 있습니다

 

 

그리고 현재 날짜와 비교를 해서 기한을 체크해줍니다

 

해당 코드는 Ajax 등의 코드가 들어가면서 코드 길이가 상당히 길어졌습니다.

그래서 게시글 위에 깃허브 주소를 참고하셔서 소스 코드를 보시는 것을 추천드립니다.

복잡하게 이 코드, 저 코드 설명하면 더 혼란을 초래할 것 같아서 이와 같이 진행하였음을 양해 부탁드립니다.

 

현재 날짜 기준으로 기한이 지난 일정들이나, 마감 날짜가 다가오는 일정들을 체크해주기 위함이죠

저런 것들을 체크해주면 알람식으로 보여줄 수 있을 겁니다

 

 

이렇게 말이죠

ui를 개인적으로 조금 바꿨습니다

기한 있는 일정과 기한 없는 일정, 마감 된 일정을 나누어서 넣었습니다

date에 대한 로직만 추가하고, ui만 바꾸면 되는 것입니다 ㅎㅎ

 

이번 포스팅은 여기까지 입니다!

위에서도 말씀드렸지만 꼭 깃허브 코드를 참고하시길 바랍니다.

하트와 스타는 저에게 큰 힘이 됩니다.

12 Comments
  • 프로필사진 HI 2019.07.29 09:18 현 게시물 시점에서, 일정 마감 여부를 설정하는 부분이 없습니다. 따라서 일정을 추가 하였을 때 추가된 일정이 보이지 않습니다.
  • 프로필사진 HI 2019.07.29 11:48 올려주신 게시 내용 중에서 일정완료 여부(iscomplete)에 대해서 초기화하는 시점이 없는 것 같은데, 어디에서 어떻게 해주면 될까요?
  • 프로필사진 이수진의 블로그 이수진의 블로그 2019.07.29 20:42 신고 안녕하세요. 오늘 바빠서 답변이 늦었네요.

    여기서부터는 깃허브에 올린 코드를 참고하셔서 보셔야 할 것 같습니다.

    코드량이 상당히 길어졌고 그에 따라 전체 코드를 단순히 사진으로 올리기 어려운 상황이었습니다.

    이 상태에서 코드를 올리면 더욱 혼란스러울 것 같다고 생각되어서 이렇게 판단을 하였습니다.

    제 깃허브에 전체 코드를 올려놨으니 꼭 참고 부탁드립니다! 감사합니다.
  • 프로필사진 duddnd 2019.08.05 14:29 장고로 오라클연동해서 게시판만들기는 어렵나요 ? 자료가 거의없다구요,.. 거의 sqlite3 나 mysql뿐 오라클로 crud는 어렵나요??????
    왜 다들 오라클은 안쓰죠?
  • 프로필사진 이수진의 블로그 이수진의 블로그 2019.08.05 15:31 신고 오라클도 얼마든지 가능합니다 ㅎㅎ 단순히 db 설정을 오라클로 바꿔주시면 됩니다.
    물론 자세히 들어가면 조금씩 다르겠지만, 검색하면 되는것이구요!
    단순한 게시판 등 작은 규모의 웹이면 거의 같을겁니다.
  • 프로필사진 w0w6w4@gmail.com 2019.12.28 17:27 으악.. 왜 달력 추가가 안될까요.
    코드 보면 DATE_INPUT_FORMATS만 만들어 두시고 딱히 연결 시키는 코드가 없는데도 달력이 만들어지나요? format같은 경우 date에 입력되는 형태만 정해주는 단계라고 생각했었는데 아닌가요?
  • 프로필사진 w0w6w4@gmail.com 2019.12.29 11:11 todo_board에 있는 forms.py에 widget 정보를 넣어주면 달력이 생성되군요.
    처음에 css랑 js 파일 받을때 그 안에 들어있는 정보였나 보군요.
    혹시 static/admin/js/admin/DateTimeShortcuts.js가 그 정보를 담고 있는 건가요?

    --------------수정한 내용---------------

    from django import forms
    from .models import TodoList

    class DateInput(forms.DateInput):
    input_type = 'date'

    class TodoForm(forms.ModelForm):
    class Meta:
    model = TodoList
    fields = ('title', 'end_date')
    widgets = {'end_date' : DateInput()}
  • 프로필사진 이수진의 블로그 이수진의 블로그 2019.12.29 11:57 신고 제가 답변이 늦었네요.
    js는 자바스크립트 파일이어서 DATE가 생성되는 것은 전혀 상관없습니다.

    말씀해주신 대로 forms.py에 내용을 추가해주면 되는 것으로 기억하고 있는데요.

    Django 내부적으로 forms.DateInput을 설정 및 밑에 widgets라는 것에 필드명 : DateInput()을 설정해주면 Django가 내부적으로 인식해줍니다. 또한, settings.py에 DATE_INPUT_FORMAT을 설정해주면 그 양식에 맡게 DATE를 Input할 수 있도록 지원해주는 것으로 이해하고 있습니다~
  • 프로필사진 w0w6w4@gmail.com 2019.12.29 18:11 좋은 말씀 감사합니다^^
  • 프로필사진 w0w6w4@gmail.com 2019.12.29 19:36 todo_board에 있는 views.py에 있는 Todoboard 클래스와 todo_board_list.html을 깃허브에서 보고 수정하였더니 올려주신 사진처럼 나왔습니다. 새로 추가하는 데이터 같은 경우 is_complete에 0또는 1값을 추가하기 위해서는 데이터베이스에 접속해야지만 가능한 것 같네요. 때문에 아직 새로운 데이터를 추가해도 목록에는 뜨지 않습니다. 쭈욱 진행해보면서 그 부분이 없다면 여기로 다시 돌아와서 수정해봐야겠네요. 아 윗분이 똑같은 질문을 해주셨군요. 다시 찾아봐야겠네요
  • 프로필사진 이수진의 블로그 이수진의 블로그 2019.12.29 20:30 신고 네 ㅠ 맞습니다.

    여기서부터는 코드 길이가 상당히 길어져서(제가 코딩을 잘 못해서요..) 블로그에 올리는 것이 더 혼란스러울 것 같았습니다.

    본문에도 언급했듯이 깃허브에 올린 자료를 차분히 따라가 보시는 것이 더 공부하시는 데 수월할 것이라 생각됩니다!

    정 어려우시면 아예 코드 자체를 다운 받아서 실행 시킨 뒤에
    어디서 어떤 동작이 되는지 디버깅 하는 것처럼 따라가보시는 것도 하나의 방법입니다!
  • 프로필사진 w0w6w4@gmail.com 2020.01.02 01:54 악.. 다음 페이지에 나와있군요..
댓글쓰기 폼