Как передать данные через URL в Django 2.2 и как получить данные с помощью AJAX get - PullRequest
0 голосов
/ 01 ноября 2019

Я застрял в проблеме, которая может иметь простой ответ на нее. Относительно URL-адресов Django и передачи данных через URL. По какой-то причине я получаю сообщение об ошибке, в котором говорится, что URL-адрес, который я запрашиваю, не найден, но у меня есть путь, определенный в URL-адресе Django. Не уверен, что происходит, и буду признателен за любую помощь.

Мой Django URL:

urlpatterns = [
    re_path(r'^data/change_title/$', views.changeAbstractTitle, name='changeAbstractTitle')
]

Мой Django View:

def changeAbstractTitle(request):
    id = request.GET.get("id", "")
    subject_area_id = request.GET.get("subjectArea_id", "")
    abstract_title = request.GET.get("abstract_title", "")
    subject_area_id = subject_area_id.replace('-', '')

    print (request.GET)

    print ('pmid: ', id)
    print ('subject_area_id: ', subject_area_id)
    print ('abstract_title; ', abstract_title)

    connection = sqlite3.connect(os.getcwd() + '/db.sqlite3')
    cursor = connection.cursor()



    cursor.execute("UPDATE getNewAbstracts_abstract SET abstractTitle=? WHERE pmid=? AND subjectArea_id=?",
                   (abstract_title, id, subject_area_id))

    connection.commit()
    connection.close()

    return JsonResponse({"new_title":abstract_title})

Это строка таблицы HTMLк которому я обращаюсь с помощью AJAX:

<td><a href="{{ item.get_absolute_url }}" id="outer_title" pmid={{ item.pmid }}>{{ item.abstractTitle }}</a></td>

<tr style="background-color:white;border-style:solid;border-color:#DDDDDD;border-width:1px">
                                            <th style="padding:10px;">Abstract Title</th>
                                            <td style="padding:10px;"><input id="abstract_title" pmid={{ item.pmid }} type="text"
                                                                             size="60"
                                                                             value="{{ item.abstractTitle }}"></td>
                                            <td style="padding:10px;"><input id="send" class="btn btn-success"
                                                                             onclick="change_title({{ item.pmid }} , '{{ item.subjectArea_id }}')"
                                                                             type="submit" value="Submit"
                                                                             style="padding:10px;"></td>
                                        </tr>

Это мой метод AJAX:

 function change_title(pmid, subjectArea_id) {
        $.ajax({
            url: `/data/change_title/?id=${pmid}` + `&subjectArea_id=${subjectArea_id}` + "&abstract_title=" + $(`[id*=abstract_title][pmid*=${pmid}]`).val(),
            type: 'GET',
            success: function (data) {
                $(`[id*=outer_title][pmid*=${pmid}]`).html(data["new_title"]);
            },
            error: function (data) {
                alert("Unable to communicate with 2.7 Backend");
            }
        });
    }

Сообщение Not Found, которое я получаю:

Not Found:/ data / change_title / [31 / Oct / 2019 14:56:25] "GET / data / change_title /? id = 31586589 & subjectArea_id = cc591ecc-2610-4647-9b2b-9563b721d1d2 & abstract_title =% 20 и% 207% CE% B2-hydroxychoter:% 20in% 20vitro% 20and% 20animal% 20models% 20used% 20to% 20характеризуются% 20their% 20activities% 20and% 20to% 20 идентифицируют% 20молекул% 20 предотвращая% 20their% 20 токсичность. HTTP / 1.1 "404 2947

Я не являюсьуверен, как передать данные через URL, чтобы я мог получить их с моей функцией Ajax. Я использую Django 2.2.

Большое спасибо за вашу помощь.

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