본문 바로가기
프로젝트/나혼자 프로젝트

sns 만들기 (게시글 수정)

by 수쨔앙 2022. 10. 9.

1. 게시글 수정페이지로 연결

2. 수정페이지에 해당 데이터 가져오고

3. 수정내용 저장후 홈에 수정된 내용 보여주기

 


게시글 수정페이지로 연결

1. views.py 작성

def post_edit(request,id):
    my_tweet = TweetModel.objects.get(id=id)
    return render(request,'tweet/post-edit.html',{'tweet':my_tweet})

 

 

2. urls.py 작성

path('tweet/post-edit/<int:id>', views.post_edit, name='post-edit'),

 

 

3. html에 연결

{% if tw.author == user %}
	# 수정페이지연결
    <a class="fs-5" href="/tweet/post-edit/{{tw.id}}" style="margin-left:250px; color: black;"><i class="bi bi-pencil"></i>
    <div style="float: right">
    	# 삭제
        <form method="post" action="/tweet/delete/{{tw.id}}">
            {% csrf_token %}
            <button type="submit" class="btn btn-light" data-bs-toggle="modal" data-bs-target="#exampleModal">
            <span class="material-symbols-outlined">delete</span>
            </button>
        </form>
    </div>
    </a>
{% endif %}

 


수정페이지에 해당 데이터 가져오기

 

html파일 수정

# 이미지
<img class="detail_feed_img " src="{{tweet.image.url}}">

# 작성자
<span id="input_user_id" class="feed_name_txt">{{tweet.author.username}}</span>

# 게시글
<textarea style="height: 330px" id="my-content" class="feed_content_textarea form-control col-sm-4" rows="10"
name='my-content' placeholder="내용을 입력하세요...">{{tweet.content}}</textarea>

 


수정내용 저장후 홈에 수정된 내용 보여주기

 

 

views.py의 post_edit 작성

def post_edit(request,id):
    edit_tweet = TweetModel.objects.get(id=id)
    if request.method == 'GET':
        return render(request,'tweet/post-edit.html',{'tweet':edit_tweet})
    else:
        edit_tweet.content = request.POST.get('my-content','')
        edit_tweet.image = request.FILES.get('image', '')
        if edit_tweet.content == '' or edit_tweet.image == '':
            edit_tweet = TweetModel.objects.all().order_by('-created_at')
            return render(request,'tweet/post-edit.html',{'error':'변경사항을 입력해주세요.','tweet':edit_tweet})
        else:
            edit_tweet.save()
            return redirect('/tweet')

 

 

 

 

 

 

728x90

댓글