Сделайте POST-запрос, используя Ajax & Django - PullRequest
0 голосов
/ 22 января 2020

Я следую этой документации о том, как сделать почтовый запрос, используя ajax и django:

https://dev.to/coderasha/how-to-send-django-form-with-ajax-4bpo


Это сколько я получил:


импорт. html

  <form method="POST" id="solver_args-form">{% csrf_token %}
    {% for field in form.visible_fields %}
    <div class="form-group">
        {{ field.label_tag }}
        {{ field }}
    </div>
    {% endfor %}
     <button type="submit" class="btn btn-primary">Submit</button>
  </form>

$(document).on('submit', '#solver_args-form',function(e){
    $.ajax({
        type:'POST',
        url:'{% url "create" %}',
        data:{
            name:$('#id_name').val(),
            csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val(),
            action: 'post'
        },
        success:function(json){
            document.getElementById("solver_args-form").reset();
        },
        error : function(xhr,errmsg,err) {
        console.log(xhr.status + ": " + xhr.responseText); 
    }
    });
});

views.py

def update_solverargs(request):
    solver_args = SolverArgs.objects.all()
    response_data = {}
    if request.POST.get('action') == 'post':
    name = request.POST.get('name')
    response_data['name']           = name
    SolverArgs.objects.create(
        name = name,
    )
    return JsonResponse(response_data)
return render(request, 'import.html', {'solver_args':solver_args}) 

urls.py

urlpatterns = [
    url(r'^create/$', update_solverargs, name='update_solverargs'),
]

Нет ошибок в консоли, страница обновляется sh, когда я отправляю форму, и ничего не сохраняется в базе данных.

Спасибо за любую помощь

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Я изменил:

if request.POST.get('action') == 'POST':

на:

if request.method == 'POST':

и теперь это работает !!

0 голосов
/ 22 января 2020

Required - это отдельный атрибут. При наличии required поле ввода должно быть заполнено перед отправкой формы. Смотрите здесь: https://www.w3schools.com/tags/att_input_required.asp Также из Django документации:

Field.blank Если True, поле может быть пустым. По умолчанию это False. Обратите внимание, что это отличается от нуля. null чисто связан с базой данных, тогда как blank связан с валидацией. Если поле имеет пустое значение = True, проверка формы позволит ввести пустое значение. Если поле имеет пустое значение = False, поле будет обязательным. Цитата

Вам нужно будет указать blank = True Например: field = models.CharField(max_length=8, default='', blank=True)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...