Как добавить поле формы Django через JavaScript? - PullRequest
0 голосов
/ 27 мая 2020

У меня есть форма Django вроде этой:

class CrawlRequest(models.Model):
    tor_info = models.CharField(max_length=20)

Мое видение такое:

def create_crawl(response):
    context = {}
    if response.method == "POST":
        my_form = RawCrawlRequestForm(response.POST)
        if my_form.is_valid():
            new_crawl = CrawlRequestForm(my_form.cleaned_data)
            new_crawl.save()
            return render(response, "main/steps_creation.html", context)
    else:
        my_form = RawCrawlRequestForm()

    context['form'] = my_form
    return render(response, "main/create_crawl.html", context)

И у меня есть мой шаблон, где у меня есть Select, который вызывает такая функция JavaScript при изменении:

function detailIpRotationType(){
    var ipSelect = document.getElementById("ip_type");
    const ip_rotation_type = ipSelect.options[ipSelect.selectedIndex].value;
    var extra_div = document.getElementById("ip_type_div");

    if(ip_rotation_type == 'tor'){
        extra_div.innerHTML = `
        <input class="form-control" name="tor_info" id="tor_info" type="text" required/>
        `
    }

Это работает нормально, но я хочу изменить этот элемент ввода на {{forms.tor_info}}. Когда я добавляю его, как обычно, как в свой основной шаблон, он не распознается как элемент Django и становится текстом.

Кто-нибудь знает, как я могу это сделать? Заранее спасибо.

1 Ответ

0 голосов
/ 27 мая 2020

{{переменные}} и сценарий, использующий (.inner HTML), не могут работать вместе в одном файле. Если вы хотите использовать внутренний HTML, вы должны поместить свой код в файл js, а затем указать идентификатор в файле html.

И если вы хотите поместить {{переменные}} и скрипт вместе в один файл, вы должны использовать скрытое поле ввода, чтобы получить значение в javascript.

На стороне Django что вы возвращаете? вы вернули render () или определили функцию?

Также проверьте эту ссылку, это может помочь:

https://adamj.eu/tech/2020/02/18/safely-including-data-for-javascript-in-a-django-template/

...