javascript - Django 网站未正确检查链接

标签 javascript jquery html mysql django

我有一个 django 网站,其中包含一个包含许多服务器详细信息的表。 表中的一列中有服务器的“ILO”IP。

我希望网站检查“ILO”IP 在 http 请求中是否有效,如果有效,则应显示链接,如果无效,则显示文本。

因此,在结果中,服务器将具有指向 ILO IP 的 http 链接,而某些服务器则没有。

在 View 的主类下,我创建了一个名为“checkUrlAvailable”的函数,我尝试在 index.html 中使用该函数,并检查 if 条件是否为 true 或 false。

由于某种原因,我收到错误 -

无法解析剩余部分:“checkUrlAvailable(server.IP)”中的“(server.IP)”

有人知道为什么吗?

index.html-

  <tr>
        <th><center> #</center></th>
        <th width="100%"><center>  Server Name </center></th>
        <th><center>  Owner </center></th>
        <th><center>  Project </center></th>
        <th width="100%"><center>  Description </center></th>
        <th width="100%"><center>  IP Address </center></th>
        <th width="100%"><center> ILO </center></th>
        <th><center>  Rack </center></th>
        <th><center>  Status </center></th>
        <th><center>  Actions {{ response }}  </center></th>


        </tr>
        </thead>
    <tbody>

                {% for server in posts %}


        <tr>
          <div class ="server">
            <td></td>
            <td style='white-space: nowrap'><center>{{ server.ServerName }}</center></td>
            <td width="100%"><center>{{ server.Owner }}</center></td>
            <td style='white-space: nowrap'><center>{{ server.Project }}</center></td>
            <td style='white-space: nowrap'><center>{{ server.Description }}</center></td>
            <td width="100%"><center>{{ server.IP }}</center></td>
            <td style='white-space: nowrap'><center>
                {% if checkUrlAvailable(server.ILO) is True %}
      <a href="//{{ server.ServerName }}.ilo.lab.radcom.co.il"> http://{{ server.ServerName }}.ilo.lab.radcom.co.il </a>
            {% else %}
        http://{{ server.ServerName }}.ilo.lab.radcom.co.il
            {% endif %}

            <td width="100%"><center>{{ server.Rack }}</center></td>
            <td width="100%"><h4><span class="badge badge-success">Online</span></h4></td></center>

views.py -

class HomeView(TemplateView):

    template_name = 'serverlist.html'

    def checkUrlAvailable(url):
        resp = requests.head(url)
        if resp.status_code == 200:
            return True
        else:
            return False


    def get(self, request):

        form = HomeForm()
        query = request.GET.get("q")
        posts = serverlist.objects.all()



        forms = {}

        if query:
            posts = serverlist.objects.filter(Q(ServerName__icontains=query) | Q(Owner__icontains=query) | Q(Project__icontains=query) | Q(Description__icontains=query) | Q(IP__icontains=query) | Q(ILO__icontains=query) | Q(Rack__icontains=query))
        else:
            posts = serverlist.objects.all()
        for post in posts:
            forms[post.id] = HomeForm(instance=post)
        args = {'form' : form,'forms': forms, 'posts' : posts}




        return render(request, self.template_name,args)

    def post(self,request):
        form = HomeForm(request.POST)
        posts = serverlist.objects.all()
        forms = {}


        if form.is_valid(): # Checks if validation of the forms passed
            post = form.save(commit=False)
            post.save()
            messages.success(request,'{0} has been added successfully!'.format(post.ServerName))

            return redirect('serverlist')
        messages.error(request,'Servername is required, please refresh the page and try again.')
        for post in posts:
            forms[post.id] = HomeForm(instance=post)
        args = {'form' : form, 'forms': forms, 'posts' : posts}

        return render(request, self.template_name,args)

最佳答案

您无法在 django 模板内调用函数。您需要定义自定义 template tag或者您可以将 checkUrlAvailable 移动到 serverlist 模型中:

class serverlist(models.Model):
   ...
    def checkUrlAvailable(self):
        resp = requests.head(self.ILO)
        if resp.status_code == 200:
            return True
        else:
            return False

并在模板中使用它,如下所示:

{% if server.checkUrlAvailable %}

关于javascript - Django 网站未正确检查链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48065582/

相关文章:

javascript - 如何检查所有数组的元素?

jquery - 如何使用javascript扩展相对位置父div的高度以包围绝对子div

html - 修复 jQuery Mobile 页面中的页脚

javascript - 为什么在添加 "overflow: auto"时拖放更顺畅?

javascript - 如何使用 JavaScript DOM 在 html 中添加 svg?

html - 圆形边框的问题

java - 将像素位置转换为纬度/经度,反之亦然

javascript - 在异步模块内调用没有回调的函数

javascript - 如何使用 IE 设置背景位置 x

jquery - 移动模拟器工作吗?iPad 上的 Css Jquery