강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

조용한 넙치님의 프로필 이미지
조용한 넙치

작성한 질문수

Django NoReverseMatch at /counsel/ 에러 질문입니다.

작성

·

141

·

수정됨

0

{% load static %}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">

<div class="container my-3">

    <table class="table">
        <thead>
        <tr class="thead-dark">
            <th>번호</th>
            <th>제목</th>
            <th>작성일시</th>
        </tr>   
        </thead>
        <tbody>
        {% if question_list %}
        {% for question in question_list %}        
        <tr>
            <td>{{ forloop.counter }}</td>
            <td> 
                <a href="{% url 'counsel:detail' question.id %}">{{question.counsel_id }}</a>
            </td>
            <td>{{ questionuser_id}}</td>
        </tr>        
    {% endfor %}
    {% else %}
    
    <tr>
        <td colspan="3">질문이 없습니다.</td>
    </tr>
    {% endif %}
        </tbody>
    </table>
    <a href="{% url 'counsel:questionuser_id' %}" class="btn btn-primary">
        댓글 등록하기  
    </a>
    
</div>

 

urls.py

from django.urls import path
from . import views

app_name = 'counsel'

#ConnetMe/urls.py파일에서 counsel/에 대한 처리를 한 상태에서 counsel/가 아닌
#빈 문자열을 인자로 넘겨 줌
urlpatterns = [
    path('', views.index, name='index'),
    path('<int:questionuser_id>/', views.detail, name='detail'),
    path('answer/<int:questionuser_id>/', views.answer_user_id, name='answer_user_id'),
]

 

views.py

#질문 목록 조회
from django.shortcuts import render, get_object_or_404, redirect

from .models import Question                                                               
from django.utils import timezone

def index(request):
    
    """
    
    counsel 목록출력
    """
    
    question_list = Question.objects.order_by('-answer_user_id')# Question 모델의 객체들을 user_id를 기준으로 내림차순으로 조회합니다.
    context = {'question_list': question_list}
    return render(request, 'counsel/question_list.html', context)# counsel/question_list.html 템플릿에 question_list를 전달하여 렌더링합니다.



def detail(request, questionuser_id):
    
    """
    
    counsel 내용출력
    """

    question = Question.objects.get(id=questionuser_id) # questionuser_id에 해당하는 Question 객체를 조회합니다.    
    context = {'question': question}
    return render(request, 'counsel/question_user detail.html', context) # counsel/question_detail.html 템플릿에 question을 전달하여 렌더링합니다.

def answer_user_id(request, questionuser_id):
    
    """
    
    counsel 댓글 등록
    """
    
    question = get_object_or_404(Question, pk=questionuser_id)#모델에 주어진 id에 해당하는 객체를 조회
                                                          #만약 객체가 존재하지 않을 때 404에러를 반환하는 의미 
    question(content=request.POST.get('content'),
                   answer_user_id =timezone.now()) # POST 요청 시 콘텐츠라는 데이터를 가져옴
    
    return redirect('counsel:detail', questionuser_id=questionuser_id)

 

models.py

from django.db import models
from django.contrib.auth.models import User

class Question(models.Model):
    subject= models.CharField(max_length=200)# 질문의 고유한 식별자를 나타내는 문자열 필드
    content = models.TextField()# 질문 내용을 담는 긴 텍스트 필드
    answer_user_id = models.DateTimeField() # 질문 작성자의 날짜와 시간 정보를 담는 필드

    
     # Question 객체가 문자열로 표현될 때 counsel_id를 반환하는 메서드

    def __str__(self):
        return self.subject
    
class Answer(models.Model):
    subject= models.ForeignKey(Question, on_delete=models.CASCADE)# 질문의 고유한 식별자를 나타내는 문자열 필드
    content = models.TextField()# 질문 내용을 담는 긴 텍스트 필드
    answer_user_id = models.DateTimeField() # 질문 작성자의 날짜와 시간 정보를 담는 필드

위에 템플릿 html 파일에 에러가 있는데 questionuser.html을 어떻게 해결하죠?

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

에러 메시지와 함께 해당 코드의 urls.py 파일도 같이 확인해주시면 더 정확한 답변을 드릴 수 있을 것 같습니다.

하지만 일단 보여주신 코드에서는 {% url 'counsel:questionuser_id' %} 부분에서 questionuser_id 라는 이름의 url 패턴을 찾지 못해 발생하는 NoReverseMatch 에러가 발생하는 것으로 보입니다. 해당 부분을 대상으로 urls.py 파일에서 해당 url 패턴이 올바르게 등록되어 있는지 확인해보세요.

또한 {% for question in question_list %} 부분에서 questionuser_id 대신 question.user_id 로 수정되어야 잘 출력될 것으로 보입니다. 위 내용을 확인하고 문제가 해결되지 않을 경우 추가로 질문해주세요. 감사합니다.

question.user_id 하니까 안되네요?

urls.py입니다.

urls.py

from django.urls import path
from . import views

app_name = 'counsel'

#ConnetMe/urls.py파일에서 counsel/에 대한 처리를 한 상태에서 counsel/가 아닌
#빈 문자열을 인자로 넘겨 줌
urlpatterns = [
    path('', views.index, name='index'),
    path('<int:questionuser_id>/', views.detail, name='detail'),
    path('answer/<int:questionuser_id>/', views.answer_user_id, name='answer_user_id'),
]
조용한 넙치님의 프로필 이미지
조용한 넙치

작성한 질문수

질문하기