점프 투 장고 2-10 폼 관련 질문 입니다.

question_detail.html '답변등록' 하는 form 에서
답변내용이 없으면 form.errors 가 발생해야 하는데
발생하지 않고 submit 해 버립니다.

<form action="{% url 'pybo:answer_create' question.id %}" method="post" class="my-3">
        {% csrf_token %}
        {% if form.errors %}
        <div class="alert alert-danger" role="alert">
        {% for field in form %}
            {% if field.errors %}
            <strong>{{ field.label }}</strong>
            {{ field.errors }}
            {% endif %}
        {% endfor %}
        </div>
        {% endif %}
        <div class="form-group">
            <textarea name="content" id="content" class="form-control" rows="10"></textarea>
        </div>
        <input type="submit" value="답변등록" class="btn btn-primary">
</form>

이부분 인데요. question_form.html 에서는 잘 동작합니다.
뭐가 문제인지 알수 있을까요?

netantz 64

M 2021년 10월 11일 10:42 오전

작성하신 view 소스를 보여 주세요. - 박응용님, 2021년 10월 11일 1:27 오후 추천 , 대댓글
목록으로
1개의 답변이 있습니다. 1 / 1 Page
from django.shortcuts import render, get_object_or_404, redirect

Create your views here.

from django.shortcuts import render
from django.utils import timezone
from .models import Question
from .forms import QuestionForm, AnswerForm
from django.core.paginator import Paginator

def index(request):
    #입력 파라미터
    page = request.GET.get('page','1') #페이지
    #조회
    question_list = Question.objects.order_by('-create_date')
    #페이징처리
    paginator = Paginator(question_list,10) #페이지당 10개씩 보여주기
    page_obj = paginator.get_page(page)
    #context = {'question_list': question_list}
    context = {'question_list':page_obj}
    return render(request,'pybo/question_list.html',context)

def detail(request, question_id):

    question = get_object_or_404(Question, pk=question_id)
    context = {'question': question}
    return render(request,'pybo/question_detail.html', context)

def answer_create(request, question_id):

    question = get_object_or_404(Question, pk=question_id)
    if request.method == "POST":
        form = AnswerForm(request.POST)
        if form.is_valid():
            answer = form.save(commit=False)
            answer.create_date = timezone.now()
            answer.question = question
            answer.save()
            return redirect('pybo:detail', question_id=question.id)
        else:
            form = AnswerForm()
        context = {'question':question, 'form': form}
        return render(request, 'pybo/question_detail.html', context)

def question_create(request):

    if request.method == 'POST':
        form = QuestionForm(request.POST)
        if form.is_valid():
            question = form.save(commit=False)
            question.create_date = timezone.now()
            question.save()
            return redirect('pybo:index')
    else:
        form = QuestionForm()
    context = {'form': form}
    return render(request, 'pybo/question_form.html', context)

netantz

2021년 10월 11일 3:30 오후

answer_create 함수에서 else 문 이후의 문장들이 전부 들여쓰기가 잘못되었습니다. 다음 페이지에서 들여쓰기를 확인해 보세요. https://wikidocs.net/70855 - 박응용님, 2021년 10월 11일 4:36 오후 추천 , 대댓글