سؤال

لذلك، أنا أستخدم django.contrib.com. لقد قمت بتثبيتها موافق ولكنها بدلا من نموذج التعليق الافتراضي غير العملي، أود استخدام قالب نموذج مخصص يظهر فقط زر Textarea وتقديمه.

الأساس المنطقي وراء هذا هو أن المستخدم يرى فقط النموذج فقط إذا كانت منطقة مصادقة بالفعل، وأحب الاستفادة من النموذج بسيطا واستلام اسم المستخدم وما إلى ذلك تلقائيا.

لقد قمت بتطبيق نموذج مخصص، لكنني أحصل على خطأ عندما أحاول إرساله.

إليك ما لدي في قالب الخاص بي للصفحة مع نموذج التعليق (الدخول هو الكائن الذي تم تمريره من العرض):

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

وهنا html الخاص بي في /templates/comments/form.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 - على وجه الخصوص، راجع تعليق Joshua Works على الجزء 2.

نصائح أخرى

يستخدم نموذج التعليق مفتاحا أجنبي عاميا لتعيين الكائن الذي تم التعليق عليه مثل إدخال المدونة. هذه هي الحقول المخفية المطلوبة المضمنة في نموذج التعليق القياسي.

من 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، فيمكنك تضمين هذه الحقول عن طريق إضافة A للحلاقة على جميع الحقول المخفية.

{% for hidden in form.hidden_fields %}
    {{ hidden }}
{% endfor %}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top