코딩공부/Python Django

KKU likelion django project (5) 번외

integerJI 2020. 1. 2. 12:12

지난 강의 이어서 지난 강의의 문제점

 

 

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