Project

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

팅코벨 2021. 5. 20. 02:38
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
반응형