에러

Reverse for '~~~' with arguments '('',)' not found. 1 pattern(s) tried: ['~~~/~~~/(?P<~~~.id>[0-9]+)$']

integerJI 2020. 3. 26. 22:47

[django error] Reverse for '~~~' with arguments '('',)' not found. 1 pattern(s) tried: ['~~~/~~~/(?P<~~~.id>[0-9]+)$']

 

해당 오류는 id값을 찾지 못해서이다

 

def update(request, post_id):
    post = Post.objects.get(id = post_id)
    if request.method == 'POST':
        post.main_text = request.POST['main_text']
        post.create_user = User.objects.get(username = request.user.get_username())
        post.update_date = timezone.datetime.now()
        post.save()
        return redirect(reverse('index'))
    return render(request, 'update.html')

 

해당 값으로 get방식이면 update를 가져오고

 

post방식이면 글을 수정하는데

 

글을 수정할 id를 못 찾아서 그런 거다.

 

이게 알고 보니까

 

<!--myApp/templates/post.html-->
{% extends 'base.html' %}
{% block content %}
<body>
    <form method="POST" action="{% url 'update' post.id %}">
        {%csrf_token%}
        <textarea cols=40 rows=10 name="main_text"></textarea>
        <br>
        <br>
        <input class="btn btn-dark" type="submit" value="post">
    </form> 
</body>
{% endblock %}

 

update를 하여 게시물을 저장한 update.html에서 굳이 action을 설정해 주었기 때문이다.

 

이미 id를 가져왔는데? 하고 찾을 아이디가 없어서 난 에뤄

 

<!--myApp/templates/post.html-->
{% extends 'base.html' %}
{% block content %}
<body>
    <form method="POST">
        {%csrf_token%}
        <textarea cols=40 rows=10 name="main_text"></textarea>
        <br>
        <br>
        <input class="btn btn-dark" type="submit" value="post">
    </form> 
</body>
{% endblock %}

 

어차피 get방식으로 들어갈 때부터 블로그 id를 가져오니 action을 빼주니 정상 작동하였다.