본문 바로가기
Project

[daily-code #1] Django에서 랜덤 버튼을 만들어 보았다.

by 팅코벨 2021. 5. 20.
728x90

졸업과제를 열심히 하는 요즘...
하나의 서비스를 만들기로 하여 데이터 분석, 자연어처리, 추천 알고리즘쪽은 다른 팀원들이하고,
나는 웹개발 담당인데 혼자 진행하게 되어 책임감도 더 크게 느껴졌다ㅠㅠ 처음으로 하나의 서비스를 혼자 프론트,백엔드 디비생각까지 해야하는데 말하는 구황작물 같은 내가 과연 할 수 있을지 아주 걱정스러운 나날을 보내고있다.. (팀원들아 열시미할게ㅠ)
... 무튼 서론이 길었는데, 새벽에 또 개발을 하다가 갑자기 매일 조금씩 새롭게 만든 부분이있음 기록하면 기억에도 남고 좋겠다 싶어 블로그에 들어왔단!🤗


오늘 만든 부분은 랜덤버튼!

import random 
def gamseong(request): #랜덤으로 
	r_mood=['아기자기한', '힙한','어두운','이국적인','고급스러운'] 
	p_mood=['울적한','화나는','기분전환이 필요한','센치한','신나는'] 
	random_r_mood = random.choice(r_mood) 
	random_p_mood = random.choice(p_mood) 
	
    context={"random_r_mood":random_r_mood,"r_mood":r_mood,"random_p_mood":random_p_mood,"p_mood":p_mood} 

    return render(request,'gamseong.html',context)

다른 변수들이나 요소들도 있지만, 랜덤 부분에만 초점을 맞춰 들고왔다.
먼저 다양한 랜덤관련 함수들을 이용하기위해 파이썬 random모듈을 불러오고,
랜덤으로 보여줄 내용들을 리스트에 담는다.
식당 감성(r_mood)과 개인의 감성(p_mood)을 분리해서 띄워주고자 두가지 리스트로 따로 만들어 담았다.
저 리스트중에서 랜덤으로 고르게 하기위해, random모듈에 내장되어 있는 choice함수를 이용하였다.
마지막으로 context에 필요한 내용들을 담아 gamseong.html에 띄워두도록 한다!
<input type="submit" name="gam2" value="{{random_r_mood}}"> -->html 코드부분


여기서 문제점!
gamseong.html 페이지에 각 분위기별 버튼 선택지들이 여러개인데,
views.py에서 전달해줄 context 변수에는 '랜덤함수를 적용한 변수(random_r_mood/random_p_mood)'의 결과로 딱 하나씩 choice된것만 담기기 때문에 html에서 버튼들이 똑같은 선택지로 나온다.
(...그걸 생각 안했넹ㅎ)

...그렇기 때문에 이런 위의 결과가 나온것!

 

수정법>>

random.choice로 랜덤으로 골라주는 변수들을 해당 버튼 선택지 갯수만큼 만들어주면 된다ㅎ 아주 원초적이고 직관적인 방법일 수 있지만..
사실 위처럼 수정해도 또 문제가 있다.
각각의 버튼별로 랜덤함수가 적용 되기 때문에, 랜덤으로 돌려도 같은게 랜덤에서 나올 수 있는 점!

바로 아래처럼....


그리하여, 최종 수정된 code👇👇

오늘의 완성된 Daily Code 빠밤-

def gamseong(request): #랜덤으로 
	r_mood=['아기자기한', '힙한','어두운','이국적인','고급스러운'] 
	p_mood=['울적한','화나는','기분전환이 필요한','센치한','신나는'] 
	random_r_mood1 = random.choice(r_mood) 
	r_mood.remove(random_r_mood1) #변수로 넣으면 에러남 -> remove는 리턴값이 없기때문에 따로 변수에 대입x, 삭제된체로 r_mood리스트에 바로담김 
	random_r_mood2 = random.choice(r_mood) 
	r_mood.remove(random_r_mood2) 
	random_r_mood3 = random.choice(r_mood) 
	r_mood.remove(random_r_mood3) 
	random_r_mood4 = random.choice(r_mood) #random_p_mood도 위와 동일... 
	
    context={"random_r_mood1":random_r_mood1,"random_r_mood2":random_r_mood2,"random_r_mood3":random_r_mood3,"random_r_mood4":random_r_mood4,"r_mood":r_mood,"random_p_mood1":random_p_mood1,"random_p_mood2":random_p_mood2,"random_p_mood3":random_p_mood3,"p_mood":p_mood} 
	return render(request,'gamseong.html',context)

remove함수를 사용하여 앞에서 랜덤으로 선택한 요소에 대해 리스트에서 제거하고, 남은 리스트 안의 요소들 중에서 다음 버튼에 들어갈 요소를 랜덤으로 뽑게 하였다.

성 공🧡

 


근데 왜 항상 나는 게시글들을 다 새벽에 올리고 있는걸까... 또 새벽3시가 다되어간다.
이만 안뇽..🌙

 

728x90
반응형

댓글