首页 > 解决方案 > 没有forms.py的Django表单不提交

问题描述

我有一个不提交的 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>

标签: htmldjangodjango-formsbootstrap-modal

解决方案


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

  {% 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 %}

推荐阅读