我想使用Django模板语言和JavaScript语法
所以,我想从我的表单(addDatabase.html)中获取用户输入,并显示输入内容的输出,让他们下载带有yaml格式输出(output.html)的txt文件 当我使用request.POST[“fieldname”]使用Django的models.py时,它起作用了。 我所做的是使用JS获取innerHTML的标记,并将其显示出来 output.html JS代码我想使用Django模板语言和JavaScript语法,javascript,python,django,django-models,django-forms,Javascript,Python,Django,Django Models,Django Forms,所以,我想从我的表单(addDatabase.html)中获取用户输入,并显示输入内容的输出,让他们下载带有yaml格式输出(output.html)的txt文件 当我使用request.POST[“fieldname”]使用Django的models.py时,它起作用了。 我所做的是使用JS获取innerHTML的标记,并将其显示出来 output.html JS代码 var name = document.getElementById("name"); for
var name = document.getElementById("name");
formContents += name.innerHTML + "\n";
var type = document.getElementById("type");
formContents += " " + type.innerHTML + "\n";
但我现在的问题是,因为我决定使用modelform而不是model.py来使用form.py。我不知道如何像以前一样从模型中检索数据
output.html
<li id="type">type: {{ form.type}}</li>
<li id="vlanid">vlan_id: {{ form.vlan_id}}</li>
<li id="rdp">rdp: {{ form.rdp}}</li>
<li id="subnet">subnet:</li>
****使用forms.py中的modelform查看.py****
这是我以前的addDatabase函数
def addDatabase(request):
# if this is a POST request we need to process the form data
return render(request, 'niro/addDatabase.html')
def addDatabase(request):
if request.method == 'POST':
form = YamlForm(request.POST)
if form.is_valid():
form.save()
# return HttpResponseRedirect('niro/output.html', {'form': form})
return HttpResponseRedirect('.', {'form': form})
else:
form = YamlForm()
return render(request, 'niro/addDatabase.html', {'form': form})
这是我当前的AddDatabase函数
def addDatabase(request):
# if this is a POST request we need to process the form data
return render(request, 'niro/addDatabase.html')
def addDatabase(request):
if request.method == 'POST':
form = YamlForm(request.POST)
if form.is_valid():
form.save()
# return HttpResponseRedirect('niro/output.html', {'form': form})
return HttpResponseRedirect('.', {'form': form})
else:
form = YamlForm()
return render(request, 'niro/addDatabase.html', {'form': form})
addDatabase.html
因此,单击按钮时,在此处发布重定向到output.html函数
<div class="container">
<form action="{% url "output" %}" method="post">
{% csrf_token %}
<div class="row name">
<h3>NETWORK</h3>
</div>
<div class="row">
<div class="col-25">
<label for="">NAME:</label>
</div>
<div class="col-75">
<span class="text-danger" small>{{ form.name.errors }}</span>
{{ form.name }}
</div>
</div>
<div class="row">
<div class="col-25">
<label for="type">TYPE:</label>
</div>
<div class="col-75">
<span class="text-danger" small>{{ form.type.errors }}</span>
{{ form.type }}
.
.
.
.
<div class="row button container">
<div class="row button">
<button type="submit" value="submit">SUBMIT</button>
<button type="submit" value="submit">ADD MORE</button>
</div>
</div>
所以我想修改这两个函数上的views.py,这样我就可以显示表单中的用户输入,并使用Django modelform使用现有JS代码启用下载功能。请帮帮我 那么,到底发生了什么?您有两种方法,其中一种不起作用?什么不起作用;渲染?发帖?@wholevinski你好!就像我在上面添加的一样,我只是使用models.py而不是forms.py,但我决定使用forms.py,因为它有更多的内置函数。因此,我以前的addDatabase函数只是有一个表单,并将输出重定向到output.html和output.html(带models.py),使用form_info.objects.all()和name=request.POST[“name”]等从表单检索每个输入。。。但是我想使用ModelForm并修改我的两个视图。。我可以显示userinput的输出并下载相同的输出,但现在我没有收到任何userinput,只是在提交表单时为空。因此,在发布之后,
addDatabase.html
不显示用户以前发布的内容?它仍然显示我的html表单,但问题是当单击提交按钮并显示输出时,它应该重定向到output.html页面。。它不会显示任何内容,当我下载文件时,它只给我html代码而不是用户输入。所以以前,我的addDatabase函数中没有任何内容,因为它只显示我的表单并获得用户输入,但没有发布所有内容,它搞砸了:(你不能在HttpResponseRedirect
中发送上下文信息。只需在output.html
上调用render,然后传入上下文,而不是尝试重定向。