Итак, я хочу получить пользовательский ввод из моей формы (addDatabase.html) и отобразить вывод того, что они ввели, и позволить им загрузить текстовый файл с выводом в формате yaml (output.html).
Это работало, когда я использовал Django models.py, используя request.POST ["fieldname"].Я использовал JS, чтобы захватить тэг innerHTML и отобразить из него
output.html JS-код
var name = document.getElementById("name");
formContents += name.innerHTML + "\n";
var type = document.getElementById("type");
formContents += " " + type.innerHTML + "\n";
Но моя проблема сейчас заключается в том, чтоЯ решил использовать form.py, используя modelform вместо model.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>
View.py (с использованием Model из models.py)
def output(request):
Form_info.objects.all()
print("The button is clicekd")
name = request.POST["name"]
type = request.POST["type"]
vlan_id = request.POST["vlanid"]
rdp = request.POST["rdp"]
ip_master = request.POST["ipmaster"]
ip_backup = request.POST["ipbackup"]
vip = request.POST["gateway"]
nat_ip = request.POST["natip"]
cidr = request.POST["cidr"]
dns = request.POST["dns"]
dhcp = request.POST["dhcp"]
dhcp_pool_start = request.POST["dhcpstart"]
dhcp_pool_end = request.POST["dhcpend"]
form_info = Form_info(name=name, type=type, vlan_id=vlan_id, rdp=rdp, ip_master=ip_master, ip_backup=ip_backup,vip=vip, nat_ip=nat_ip, cidr=cidr, dns=dns, dhcp=dhcp, dhcp_pool_start=dhcp_pool_start,dhcp_pool_end=dhcp_pool_end)
form_info.save()
context = {
'form': form_info
}
return render(request, 'niro/output.html')
**** View.py с использованием modelform из forms.py ****
Это моя предыдущая функция addDatabase
def addDatabase(request):
# if this is a POST request we need to process the form data
return render(request, 'niro/addDatabase.html')
Это моя текущая функция AddDatabase
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>
Models.py
BOOLEAN_CHOICES = (
(None, ' '),
(True, 'true'),
(False, 'false')
)
class Form_info(models.Model):
# all the columns
# example = models.CharField(null=Ture, unique=True)
name = models.CharField(max_length=50, null=True)
type = models.CharField(max_length=1, null=True)
# vlan_id = models.DecimalField(max_digits=4, decimal_places=0, null=True)
vlan_id = models.CharField(max_length=4, null=True)
rdp = models.CharField(max_length=10, null=True)
ip_master = models.CharField(max_length=15, null=True)
ip_backup = models.CharField(max_length=15, null=True)
# vip = models.GenericIPAddressField(protocol="ipv4")
vip = models.CharField(max_length=15, null=True)
nat_ip = models.CharField(max_length=15, blank=True)
# subnetmask might be devided into 2 different fields
cidr = models.CharField(max_length=18, null=True)
dns = models.CharField(max_length=15, null=True)
# boolean dropdown doesnt show
dhcp = models.CharField(null=True, max_length=10)
dhcp_pool_start = models.CharField(max_length=15, null=True)
dhcp_pool_end = models.CharField(max_length=15, null=True)
def get_absolute_url(self):
return reverse('niro:output', kwargs={'pk': self})
def __str__(self):
print("This is models.py")
return self.name + self.name + self.vlan_id + self.rdp + self.cidr + self.dhcp
Поэтому я хочу изменить свои представления.py для обеих функций, так что я могу отображать пользовательский ввод из формы и включить функцию загрузки с существующим кодом JS, используя форму модели Django.Пожалуйста, помогите мне !!