문제

그래서 나는 django.contrib.comments를 사용하고 있습니다. 나는 그것을 설치했지만 다루기 힘든 기본 주석 양식 대신 텍스트와 제출 버튼을 보여주는 사용자 정의 양식 템플릿을 사용하고 싶습니다.

이에 대한 이론적 근거는 사용자가 이미 영역이 인증 된 경우에만 양식을보고 있으며, 양식을 간단하게 유지하고 사용자 이름 등을 자동으로 선택하는 것입니다.

사용자 정의 양식을 구현했지만 제출하려고 할 때 오류가 발생합니다.

다음은 주석 양식이있는 페이지 템플릿에있는 내용입니다 (Entry는보기에서 전달 된 객체입니다).

{% load comments %}
{% render_comment_form for entry %}

그리고 여기에 /templates/comments/form.html의 HTML이 있습니다.

{% if user.is_authenticated %}
    <p>Submit a comment:</p>
    <form action="/comments/post/" method="post">
    <textarea name="comment" id="id_comment" rows="2" style="width: 90%;"></textarea>
            <input type="hidden" name="options" value="{{ options }}" />
            <input type="hidden" name="target" value="{{ target }}" />
            <input type="hidden" name="gonzo" value="{{ hash }}" />
            <input type="hidden" name="next" value="{{ entry.get_absolute_url }}" /> 
             <span style="float:right;"><input type="submit" name="post" value="Add"></span>
    </form>
    {% else %}
        <p>Please <a href="/login/">log in</a> to post a comment.</p>
    {% endif %}

처음에는 괜찮아 지지만 주석 양식을 제출하려고하면 다음 Django 오류가 발생합니다.

Comment post not allowed (400)
Why:    Missing content_type or object_pk field.

누구든지 도울 수 있습니까?

도움이 되었습니까?

해결책 2

복사하여 문제를 해결했습니다 Theju의 앱 - 특히 2 부에 대한 Joshua Works의 의견을 참조하십시오.

다른 팁

주석 모델은 일반적인 외국 키를 사용하여 블로그 항목과 같이 주석을 작성한 객체에 매핑합니다. 표준 주석 양식에 포함 된 숨겨진 필드가 필요합니다.

django.contrib.comments.Models에서

...
class CommentSecurityForm(forms.Form):
    """
    Handles the security aspects (anti-spoofing) for comment forms.
    """
    content_type  = forms.CharField(widget=forms.HiddenInput)
    object_pk     = forms.CharField(widget=forms.HiddenInput)
...

양식 클래스를 변경하지 않았고 HTML 템플릿 만 변경하려면 모든 숨겨진 필드에 루프를 추가 하여이 필드를 포함시킬 수 있습니다.

{% for hidden in form.hidden_fields %}
    {{ hidden }}
{% endfor %}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top