redirect 없이 url_for만 사용하기
243
작성한 질문수 90
안녕하세요 선생님
영상 28분 04 초 입니다
여기서 보면
@bp.route('/upload_image', methods=['POST'])
def upload_image():
if request.method == 'POST':
file = request.files['image']
if file is not None and allowed_file(file.filename):
filename = "{}.jpg".format(random_generator())
savefilepath = os.path.join(app.config["BOARD_IMAGE_PATH"], filename)
file.save(savefilepath)
return url_for('board.board_images', filename=filename)
위와 같이 upload_image 함수를 만들었어요
근데 return할대 redirect 없이 url_for만 사용하였습니다.
url_for만 단독으로 사용이 가능하다면, 이전영상들에서는
왜 redirect(url_for(~~~)) 이런식으로 코드를 만들었을까요
굳이 redirect 없이, url_for만 사용하면 될텐데요
너무 궁금하여 질문드립니다~
답변 1
1
웹프로그래밍은 프로그램의 흐름을 이해하셔야 합니다. 질문하신 upload_image 함수는 이미지 업로드에 사용되는 함수로서 이미지를 클라이언트로 전달받아서 서버에 저장하고 저장된 이미지의 주소를 반환해주는 용도로 사용됩니다. 그래서 페이지를 이동하면 안되고 이동할 이유가 없습니다.
질문자님께서 지금 여기 인프런 질문게시판에 저한테 질문하실때 이미지를 올리셨는데 이미지 업로드가 끝나니까 갑자기 페이지가 이동되면 어떠시겠어요? 그래서 redirect 를 할 필요가 없고 해서는 안되는 내용입니다.
url_for 함수는 서버의 주소를 편하게 표기하기 위해 사용되는 하나의 유틸리티 같은 기능의 함수입니다. 꼭 써야하는건 아니지만 쓰면 엄청 편한 역할을 하는거죠. 예를 들어,
url_for('board.board_images', filename=filename)
를 사용하지 않고 대신에
http://도메인주소/board/images?filename=abcd
이렇게 작성해도 상관없습니다. 물론 위는 하나의 예시입니다. 그런데 만약 /board/ 경로를 /board2/로 바꿔야한다면 소스코드 전체를 다 수정해야겠죠? 그래서 그런 편의를 위해서 url_for를 사용하는 겁니다. url_for 가 엄청 특별한 기능을 해주는건 아닙니다. redirect 와 url_for 는 서로 아무런 관련이 없습니다.
iis 접속후 자동으로 로그인 창이 나오도록 설정이 기능한가요?
0
86
2
리스트 이동 시 창 에러 발생
0
90
1
배포후 회원 등록 후 로그인 에러...
0
88
2
내부 서버 오류
0
87
2
app.config["MONGO_URI"] = "mongodb://localhost:27017/pm_db"
0
65
2
DB 검색하면 데이터가 없습니다. 라고 나와요. 5시간을 찾아봐도 모르겠어서 문의드려봅니다.
0
63
1
몽고db studio3T를 깔았는데
0
73
2
flake8과 linter
0
92
3
500이 뜹니다.
0
66
2
첨부파일 삭제
0
74
2
검색기능 질문
0
75
2
google.py
0
75
2
Studio 3T에 DB insert가 되지 않는 문제를 해결하지 못하고 있습니다 ㅠ
0
93
3
혹시 전체 코드 공개되어 있나요?
0
104
1
join.html 의 form 태그값 을 member_join() 에서 처리못함.
0
112
1
google.py 몽고db 샘플데이터 만들기
0
111
2
flake8 설치 이후 명령팔레트에서 linter가 안보입니다.
0
254
2
파이썬으로 만들어서 웹호스팅에 올릴경우
0
316
1
현재 구글검색 무한스크롤변경 문의합니다
0
307
1
몽고디비아틀라스로 추가 공부해서 올립니다.
0
225
1
IIS 500.19에러
0
669
2
버전 문제도 수정했는데 결과가 안나옵니다.
0
266
1
데이터베이스 저장관련 질문입니다.
0
280
1
test가 생기지 않습니다.
0
520
3





