如何通过 JavaScript 添加 Django 表单字段?



>我有一个这样的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 元素,而是变成文本。

有人知道我该怎么做吗?提前谢谢。

{{variables}} 和使用 (.innerHTML( 的脚本不能在一个文件中协同工作。如果你想使用innerHTML,你应该把你的代码放在js文件中,然后将id引用到html文件。

如果你想把 {{variables}} 和脚本放在一个文件中,你应该使用隐藏的输入字段来获取 javascript 中的值。

在 Django 方面,你返回什么?你是返回 render(( 还是定义了一个函数?

也检查此链接,它可能会有所帮助:

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

最新更新