【问题标题】:Django form not submitting without forms.py没有forms.py的Django表单不提交
【发布时间】:2019-09-13 20:52:33
【问题描述】:

我有一个没有提交的 Django 表单。我正在使用 Django 基本模型。以下是表单的视图。我认为这可能是 CSRF 令牌的问题,因为它一直在抛出该错误,但表单本身没有提交。我什至没有看到“出了点问题”错误消息。

def voting(request):
    if request.method == 'POST':
        user=request.user
        if user.is_authenicated:
            price, created = Voting.objects.get_or_create(
                             user=request.user,
                             anonymous_user=False,
                             object_id = Object.objects.get(
            objectid=request.POST.get('objectid')
            ),
                             thumbs_up=request.POST.get('thumbs_up'),
                           thumbs_down=request.POST.get('thumbs_down'),
                             comments=request.POST.get('comments')
                              )
            price.save()
        else:
            pass
        response_data = 'success'
        return HttpResponse(json.dumps(response_data), content_type="application/json")
   else:
       return HttpResponse(json.dumps({"message": "Something went wrong"}),content_type="application/json")

这里是html代码:

<div class="voting text-right"><small>See a problem?</small>
 <a onclick="thumbsup('{{ data.object.objectid }}'>
   <i class="fas fa-thumbs-up"></i>
 </a>
 <a data-toggle="modal" data-target="#feedback" data-object-id="{{ data.object.objectid }}">
 <i class="fas fa-thumbs-down"></i>

它不起作用并且不提交。我也不断遇到 CRSF 令牌的问题。

这里是模态:

<!-- Modal -->
<div class="modal fade" id="feedback" tabindex="-1" role="dialog" aria-labelledby="feedback" aria-hidden="true">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Feedback</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
                <form id="feedback-form" action="/api/voting/" method="post">
                    {% csrf_token %}
                    <input type="hidden" name="objectid">
                    <input type="hidden" name="thumbs_up" value="False">
                    <input type="hidden" name="thumbs_down" value="True">

                    <p>We would love to hear your thoughts!</p>
                    <div class="form-group">
                        <label for="comments">Please leave your feedback below:</label>
                        <textarea class="form-control" id="comments" name="comments" rows="3" required></textarea>
                    </div>
                    <div class="form-group">
                        <button type="submit" class="btn btn-secondary">Submit</button>
                    </div>
                </form>
            </div>
        </div>
    </div>
</div>

【问题讨论】:

  • 表格在哪里?它在模态中吗?我们需要看到这一点。
  • @Matthew 加了模态,不小心忘记了

标签: html django django-forms bootstrap-modal


【解决方案1】:

如果这是一个表单验证错误,但您缺少捕获(这将匹配未提交),那么将其添加到您的模板将突出显示原因

  {% if form.errors %}
    {% for field in form %}
        {% for error in field.errors %}
            <div class="alert alert-danger">{{field}}
                <strong>{{ error|escape }}</strong>
            </div>
        {% endfor %}
    {% endfor %}
    {% for error in form.non_field_errors %}
        <div class="alert alert-danger">
            <strong>{{ error|escape }}</strong>
        </div>
    {% endfor %}

  {% endif %}

【讨论】:

  • 我真的没有像 forms.py 那样的 Django 表单,这还能用吗?我将如何使用模态来实现这一点?我只是将它添加到模态中吗?
  • 您将其添加到您的 html 代码(模板)中。表单是视图的扩展。您提交的帖子需要表单(无论如何呈现)通过 is_valid
猜你喜欢
  • 2020-10-25
  • 2021-08-07
  • 1970-01-01
  • 1970-01-01
  • 2011-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-11
相关资源
最近更新 更多