Django/Django 회원 관리
Django) JavaScripts를 이용한 상호작용(image 미리보기)
jinsang-2
2024. 4. 25. 18:58
# 회원 가입 기능을 구현할 때 프로필 사진 등을 미리보기 하는 방법
회원가입 시 1번 파일 선택을 눌렀을 때 누른 사진이 무엇인지 바로 볼 수 있도록 동작하는 것을 구현하려 한다.
우리에게는 JavaScripts 몇 줄 만 있으면 가능하다!
- 자바스크립트 부분, 전체코드는 아래를 확인
{% block extrajs %}
<script>
// 이미지 파일이 입력되면 미리보기를 보여주는 함수
document.getElementById('id_profile_img').onchange = function(event) {
var reader = new FileReader();
reader.onload = function() {
var output = document.getElementById('image_preview');
output.src = reader.result;
output.style.display = 'block'; // 이미지를 보이게 합니다
};
reader.readAsDataURL(event.target.files[0]);
};
</script>
{% endblock %}
- signup.html 전체 코드 -
{% extends "base.html" %}
{% block title %}Signup{% endblock %}
{% block extrahead %}
<style>
#image_preview {
max-width: 200px; /* 이미지 크기 제한 */
height: auto;
display: none; /* 초기에는 이미지 보이지 않게 설정 */
}
</style>
{% endblock %}
{% block content %}
<div class="signup-container">
<h1>Sign Up</h1>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<!-- profile_img 필드에 대해 개별적으로 수정할 필요가 있으면 여기서 조정 -->
<img id="image_preview" alt="Your image will appear here.">
<button type="submit">Sign up</button>
</form>
</div>
{% endblock %}
{% block extrajs %}
<script>
// 이미지 파일이 입력되면 미리보기를 보여주는 함수
document.getElementById('id_profile_img').onchange = function(event) {
var reader = new FileReader();
reader.onload = function() {
var output = document.getElementById('image_preview');
output.src = reader.result;
output.style.display = 'block'; // 이미지를 보이게 합니다
};
reader.readAsDataURL(event.target.files[0]);
};
</script>
{% endblock %}