작성
·
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입니다.