Получение дополнительных HTML данных с использованием xhttp в Django - PullRequest
1 голос
/ 29 апреля 2020

Сейчас я работаю с формой Django, основанной на классе ModelForm, который использует JavaScript на моей странице для получения данных формы с использованием POST.

class MyForm(ModelForm):
    data_url = '/form-data/'
    dep_fields = '__all__'

    class Meta:
        model = Sign
        fields = '__all__'
        exclude = ['name', ]

    class Media:
        js = ('js/form.js',)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        attrs_dict = {'onchange': 'addForm(this)', 'style': 'display:', 'data-url': f'{self.data_url}'}
        if self.data:
           '''form fields logic'''

My Javascript выполняет следующие действия. Он хранит мои данные формы следующим образом:

var data = new FormData(obj.form);

, а затем отправляет на мой сервер каждый раз, когда я изменяю любое поле формы:

xhttp.send(data);

И данные формы выглядят так и сохраняются в form self.data:

self.data = {'csrfmiddlewaretoken': ['cpWuNU1JfK'], 'country': ['2'], 'region': [''], 'area': [''], 'color': [''], 'sign': ['']}

(я уменьшил токен для удобства)

Так что все, что мне нужно, это получить идентификатор выбранного поля со своей страницы HTML (идентификатор страны в этом дело). Я добавил следующий код к своему JS:

var field_id = parseInt(obj.id );
xhttp.send(field_id);

И, похоже, он работает, но я не могу понять, где и как я могу получить эти данные (field_id) на моем Django сервере.

UPD: Когда я делаю это следующим образом:

var data = new FormData(obj.form);
var field_id = parseInt(obj.id ); 
data.append('field_id', field_id);
xhttp.send(data);

значение id добавляется к моим POST form.data следующим образом:

self.request.POST: <QueryDict: {'csrfmiddlewaretoken': ['rM0EwOPajAe4i'], 'country': ['1'], 'region': [''], 'area': [''], 'color': [''], 'sign': [''], 'field_id: [1]}

Что заставляет меня думать, что JS посылает это. Мне просто нужно получить field_id значение отдельно

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