Django:如何定义“下一个”在评论表中

发布于 2024-10-20 20:08:06 字数 2079 浏览 7 评论 0原文

我在网站上的两个地方使用 Django 注释框架。每次提交后,我希望用户能够被重定向回他们所在的原始页面。

如何定义“下一个”变量以便用户被重定向?

有关重定向的信息: http:// /docs.djangoproject.com/en/dev/ref/contrib/comments/#redirecting-after-the-comment-post

另外,这是我正在使用的表单。 comment.types 不起作用,但这就是我认为我应该做的 - 为每个评论类型(图片与膳食)定义两个不同的下一个输入。

{% load comments i18n %}
<form action="{% comment_form_target %}" method="post">{% csrf_token %}
    {% if comment.type == '19' %}
    <input type="hidden" name="next" value="{% url meal comment.object_pk %}" />
    {% endif %}
    {% if comment.type == '23' %}
    <input type="hidden" name="next" value="{% url picture comment.object_pk %}" />
    {% endif %}
  <!-- <input type="hidden" name="next" value="{{ next }}" /> -->
  {% for field in form %}
    {% if field.is_hidden %}
      {{ field }}
    {% else %}
      {% if field.errors %}{{ field.errors }}{% endif %}
      <p
        {% if field.errors %} class="error"{% endif %}
        {% ifequal field.name "honeypot" %} style="display:none;"{% endifequal %}
         {% ifequal field.name "name" %} style="display:none;"{% endifequal %}
         {% ifequal field.name "email" %} style="display:none;"{% endifequal %}
         {% ifequal field.name "url" %} style="display:none;"{% endifequal %}
         {% ifequal field.name "title" %} style="display:none;"{% endifequal %}>
        <!-- {{ field.label_tag }}  -->{{ field }}
      </p>
    {% endif %}
  {% endfor %}
  <p class="submit">
        <button type="submit">Send</button>
    <!-- <input type="submit" name="preview" class="submit-preview" value="{% trans "Preview" %}" /> -->
  </p>
</form>

然后是膳食和饮食。我有的图片页面:

    <h4>Post a Message</h4>
{% render_comment_form for meal %}

    <h4>Post a Message</h4>
{% render_comment_form for picture %}

I am using the Django comments framework in two places on my site. After each submission, I'd like for the user to just be redirected back to the original page they were on.

How do you define the "next" variable so the user is redirected?

Information on the redirect : http://docs.djangoproject.com/en/dev/ref/contrib/comments/#redirecting-after-the-comment-post

Also, here is the form I am using. The comment.types do not work, but that is what I think I am supposed to do - define two different next inputs for each comment type (picture vs meal).

{% load comments i18n %}
<form action="{% comment_form_target %}" method="post">{% csrf_token %}
    {% if comment.type == '19' %}
    <input type="hidden" name="next" value="{% url meal comment.object_pk %}" />
    {% endif %}
    {% if comment.type == '23' %}
    <input type="hidden" name="next" value="{% url picture comment.object_pk %}" />
    {% endif %}
  <!-- <input type="hidden" name="next" value="{{ next }}" /> -->
  {% for field in form %}
    {% if field.is_hidden %}
      {{ field }}
    {% else %}
      {% if field.errors %}{{ field.errors }}{% endif %}
      <p
        {% if field.errors %} class="error"{% endif %}
        {% ifequal field.name "honeypot" %} style="display:none;"{% endifequal %}
         {% ifequal field.name "name" %} style="display:none;"{% endifequal %}
         {% ifequal field.name "email" %} style="display:none;"{% endifequal %}
         {% ifequal field.name "url" %} style="display:none;"{% endifequal %}
         {% ifequal field.name "title" %} style="display:none;"{% endifequal %}>
        <!-- {{ field.label_tag }}  -->{{ field }}
      </p>
    {% endif %}
  {% endfor %}
  <p class="submit">
        <button type="submit">Send</button>
    <!-- <input type="submit" name="preview" class="submit-preview" value="{% trans "Preview" %}" /> -->
  </p>
</form>

And then on the Meal & Picture pages I have:

    <h4>Post a Message</h4>
{% render_comment_form for meal %}

    <h4>Post a Message</h4>
{% render_comment_form for picture %}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

笑叹一世浮沉 2024-10-27 20:08:06

想通了。要将 next 与多个对象一起使用,请使用 if 语句。

{% if picture %}
<input type="hidden" name="next" value="{% url picture picture.id %}" />
{% endif %}

Figured it out. To use the next with multiple objects, use an if statement.

{% if picture %}
<input type="hidden" name="next" value="{% url picture picture.id %}" />
{% endif %}
So要识趣 2024-10-27 20:08:06

如果你想留在同一页面,ajax 是一种选择,你可以使用类似 django_ajaxcomments< /a>,有很多关于使用 ajax 执行此操作的其他方法的帖子。

If you want to stay on the same page ajax is an option, you could use something like django_ajaxcomments, there are quite a few posts on others ways to do this with ajax.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文