지난 강의 이어서 지난 강의의 문제점
postapp/templates/new.html
새로 글을 쓸때의 문제점이 발생하였다.
이미지란 파일을 올리기 위해서는
form의 method가 post여야 하고 enctype="multipart/form-data" 가 꼭 설정이 되어있어야 한다.
저번 강의에서는 이러한 설정을 form말고 div에 넣어주어 오류가 생겼었다.
또한 method가 post이니 csrf_token을 꼭 설정하여 주자
<br> <div class="container"> <form method = "POST" action="{% url 'create' %}" enctype="multipart/form-data"> {% csrf_token %} <h4>제목: </h4> <input type="text" name="title"> <br> <br> <h4>본문: </h4> <textarea cols=40 rows=10 name="body"></textarea> <br> <br>
<h4>이미지 :</h4> <input type="file" name="images"> <br> <br>
<input class="btn btn-dark" type="submit" value="제출하기"> </form> </div> |
이제 views.py에서 문제점이 발생하였다.
def create(request): post = Post() post.title = request.POST['title'] post.body = request.POST['body'] post.pub_date = timezone.datetime.now() post.name = User.objects.get(username = request.user.get_username()) post.images = request.FILES['images'] post.save() return redirect('/post/' + str(post.id)) |
request값이 GET에서 POST로 바뀌어야 하고
결정적으로 저번과는 다른 images는 request가 file이므로 FILES라고 설정해줘야 하는 것이다.
그렇다면 이제 정상적으로 게시글에 사진이 등록되는 걸 볼 수 있다!!
'코딩공부 > Python Django' 카테고리의 다른 글
KKU likelion django project (7) (0) | 2020.01.02 |
---|---|
KKU likelion django project (6) (0) | 2020.01.02 |
KKU likelion django project (5) (0) | 2020.01.02 |
KKU likelion django project (4) (0) | 2020.01.02 |
KKU likelion django project (3) (0) | 2020.01.02 |