我想使用Django模板语言和JavaScript语法

2024-05-16 01:20:21 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我想从我的表单(addDatabase.html)中获取用户输入,并显示他们输入的内容的输出,让他们下载带有yaml格式输出(output.html)的txt文件

当我使用request.POST[“fieldname”]使用Django的models.py时,它正在工作。 我所做的是使用JS获取innerHTML的标记并显示output

output.html JS代码

        var name = document.getElementById("name");
        formContents += name.innerHTML + "\n";


        var type = document.getElementById("type");
        formContents += "  " + type.innerHTML + "\n";

但我现在的问题是,因为我决定使用modelform而不是model.py来使用form.py。我不知道如何像以前那样从模型中检索数据

输出.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(使用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')

****使用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')

这是我当前的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})

添加数据库.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>

型号.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

所以我想修改这两个函数上的views.py,这样我就可以显示表单中的用户输入,并使用Django modelform启用现有JS代码的下载功能。请帮帮我


Tags: namedivformidtruemodelsrequesttype