Как вызвать def в python для ajax

0

Я хочу удалить 1 базу данных в базе данных. Когда я нажимаю кнопку "Удалить", то выводим диалоговое окно для подтверждения. Но когда я использую ajax, я не могу удалить. Пожалуйста, помогите мне! это мой код просмотра

def company_delete(request):
if request.method == 'POST':
    company = Company.objects.get(pk=int(QueryDict(request.body).get('postpk')))
    company.delete()
    response_data = {}
    response_data['mgs'] = 'Company was deleted'
    return HttpResponse(
        json.dumps(response_data),
        content_type="application/json"
    )
else:
    return HttpResponse(
        json.dumps({"nothing to see": "this isn't happening"}),
        content_type="application/json"
    )

Это мой html-код:

<div class="form-group">
                    <div class="col-lg-offset-2 col-lg-10">
                        <a id="opener" type="submit" class="btn btn-danger">Delete</a>
                    </div>
                    <div id="dialog" title="Are you sure?">
                        <p>Some helpful info here</p>
                    </div>
                </div>

Это мой код jquery

 $(function () {
        $("#dialog").dialog({
            autoOpen: false,
            resizable: false,
            height: 140,
            modal: true,
            show: {
                effect: "blind",
                duration: 1000
            },
            hide: {
                effect: "explode",
                duration: 1000
            },
            buttons: {
                "Yes": function delete_company(companyid) {
                    $.ajax({
                        type: "POST",
                        url: "company_delete/",
                        data: { postpk : companyid },
                        success: function (json) {
                            $('#dialog' + companyid).hide();
                            console.log("company deletion successful");
                            $(this).dialog("close");
                        }
                    });
                },
                Cancel: function () {
                    $(this).dialog("close");
                }
            }
        });
        $("#opener").click(function () {
            $("#dialog").dialog("open");
        });
    });

Это мои URL:

urlpatterns = [
url(r'^delete/(?P<company_id>\d+)/$', views.company_delete, name='company_delete'),]
  • 0
    @TommyOliver Попробуйте использовать вкладку «Сеть» отладчика браузера (F12), чтобы проверить, поступает ли ваш запрос на веб-сервер.
  • 0
    url (r '^ delete / (? P <company_id> \ d +) / $', views.company_delete, name = 'company_delete'),
Теги:

1 ответ

0

Похоже, ваш шаблон URL-адреса ожидает, что вызов придет, чтобы " delete/<company_id> ", но ваш URL-адрес JQuery ajax указывается на "company_delete", и вы выполняете POST, который не отправляет идентификатор компании в URL-адрес.

Вы хотели дать "компания/удалить" в AJAX? (что имеет смысл, если ваш urls.py является частью приложения, и есть еще один верхний уровень/уровень проекта urls.py, что "компания" в качестве шаблона url)

И для удаления лучше использовать "тип": "удалить" в JQuery ajax call (и внести необходимые изменения в представление Django для этого)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню