2023.04.11(오류싸움 승리)

Vinyl Stage·2023년 4월 11일
0

개발일지

목록 보기
29/42

Django
Co. Meet프로젝트 2일차

Error

아침에 model을 수정하고 migrate하는데 에러가 생겼다

기본값을 지정하지 않고 커밋할 수 없는 필드 'commit'을 추가할 수 없습니다. 데이터베이스에 기존 행을 채울 무언가가 필요하기 때문입니다.
라는 뜻이란다
그니까 디폴트로 뭔가를 달라는 것이다

그래서

이와같이
default=''를 넣어주었다



그랬더니 아주 잘 된다

def edit_view

게시글 수정을 하는 함수를 맡아서 했다

쓰는것까지는 알겠으나 db내용을 불러와서 수정한다는게 감이 안잡혔다

사실 굉장히 단순한 작업이였다

코드는 그냥 게시글 쓰기와 같다는것


실제 프로젝트에 사용된 코드

저걸 강의자료로 테스트하려고 하루종일 매달렸다

왜 시간을 많이 먹었나

뭔가 다른줄알고 계속 구글링하며 코드를 찾고 적용시켜보았으나 계속 오류가 났다

이유는 단순했다

맞지 않는 코드를 사용했기 때문이다
잘 알아보고 하자

코드 적용전 TEST


대충 글 목록


보기버튼을 누르고 상세페이지로 이동하고


수정버튼을 누르면 입력했던 텍스트가 고대로 나오고


수정한 내용이 잘 적용된다

앙 기모띠


오늘 알고리즘공부
프로그래머스
영어가 싫어요

간단하게 문자열 치환이다

근데 나는 진짜 무식하고 비효율적으로 코드를 짰다

def solution(numbers):
    renum = numbers.replace('zero', '0').replace('one', '1').replace('two', '2').replace('three', '3').replace('four', '4').replace('five', '5').replace('six', '6').replace('seven', '7').replace('eight', '8').replace('nine', '9')
    return int(renum)

꼬리에 꼬리를 무는 .replace()다

이런식으로 길게 짜게 된다면 휴먼에러가 발생할 수밖에 없다

다른사람들의 코드를 보고 이마를 탁 쳤다

def solution(numbers):
    for num, eng in enumerate(["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]):
        numbers = numbers.replace(eng, str(num))
    return int(numbers)

enumerate()사용

def solution(numbers):
    dic = ["zero", "one", "two", "three", "four",
           "five", "six", "seven", "eight", "nine"]
    i = 0
    for word in dic:
        numbers = numbers.replace(word, str(i))
        i += 1
    return int(numbers)

딕셔너리 활용

자료구조와 알고리즘은 이런식으로 하는것인가보다
반성하게된다

profile
Life is Art

0개의 댓글