2017-02-21 25 views
0

Я использую django для создания базы данных, которая может быть просмотрена через веб-сайт.django и jquery datatables

Прежде чем углубиться в мой проект, я построил приложение django и добавил таблицу в свои модели только с одной строкой данных. Теперь я пытаюсь визуализировать эту таблицу с использованием jQuery datatables. Однако формат jquery datatables не отображается. Я пробовал все возможные решения, которые я нашел, но пока ничего не получается.

Models.py

from django.db import models 

class Variant(models.Model): 
    type = models.CharField(max_length = 20) 
    protein_id = models.CharField(max_length = 20) 
    gene_symbol = models.CharField(max_length = 20) 
    chromosome = models.CharField(max_length = 5) 
    position = models.CharField(max_length = 20) 
    variation = models.CharField(max_length = 20) 
    consequence = models.CharField(max_length = 40) 
    rs = models.CharField(max_length = 20) 
    maf = models.CharField(max_length = 20) 
    phenotype = models.CharField(max_length = 20) 
    source = models.CharField(max_length = 40) 

Views.py

from django.shortcuts import render 
from view_data.models import * 

def variants(request): 
    queryset = Variant.objects.all() 
    return render(request, "variants.html", {"allvars": queryset}) 

Urls.py

from django.conf.urls import url 
from django.contrib import admin 
from view_data import views 
from django.conf import settings 
from django.conf.urls.static import static 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^variants/', views.variants), 
] 

if settings.DEBUG: 
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

variants.html

{% load static %} 

<html> 
<head> 
    <script src="{{ STATIC_URL }} js/jquery.js"></script> 
    <script src="{{ STATIC_URL }} jquery.min.js"></script> 
    <script src="{{ STATIC_URL }} jquery.dataTables.min.js"></script> 
    <link rel="stylesheet" href="{{ STATIC_URL }} jquery.dataTables.min.css"> 
    <script> 
     $(document).ready(function(){ 
      $("table_id").dataTable(); 
      }); 
    </script> 
</head> 

<body> 

<div style="width:90%; margin:0 auto;">  
<table id="table_id" class="display" cellspacing="0" width="100%"> 
<thead> 
<tr> 
    <th>Variant Type</th> 
    <th>Protein Id</th> 
    <th>Gene Symbol</th> 
    <th>Chromosome</th> 
    <th>Position</th> 
    <th>Variation</th> 
    <th>Consequence</th> 
    <th>RS Id</th> 
    <th>GMAF</th> 
    <th>Phenotype</th> 
    <th>Source</th> 
</tr> 
</thead> 

<tbody> 
{% for v in allvars %} 
<tr> 
    <td>{{ v.type }}</td> 
    <td>{{ v.protein_id }}</td> 
    <td>{{ v.gene_symbol }}</td> 
    <td>{{ v.chromosome }}</td> 
    <td>{{ v.position }}</td> 
    <td>{{ v.variation }}</td> 
    <td>{{ v.consequence }}</td> 
    <td>{{ v.rs }}</td> 
    <td>{{ v.maf }}</td> 
    <td>{{ v.phenotype }}</td> 
    <td>{{ v.source }}</td> 
</tr> 
{% endfor %} 
</tbody> 
</table> 

</body> 
</html> 

Статическая папка, содержащая файлы js и css, находится на том же уровне, что и мое приложение django (view_data). В файле settings.py я добавил 'view_data' и 'jquery' в INSTALLED_APPS. Я также указать свои статические файлы как:

STATIC_URL = '/static/' 
STATIC_ROOT = (os.path.join(BASE_DIR, 'static')) 
STATIC_DIRS = (os.path.join(BASE_DIR, 'static')) 

Теперь, когда я запускаю сервер, я получил в терминале следующие строки:

[21/Feb/2017 15:33:54] "GET /variants/ HTTP/1.1" 200 1079 
[21/Feb/2017 15:33:54] "GET /variants/jquery.dataTables.min.js HTTP/1.1" 200 1079 
[21/Feb/2017 15:33:54] "GET /variants/jquery.min.js HTTP/1.1" 200 1079 
[21/Feb/2017 15:33:54] "GET /variants/jquery.dataTables.min.css HTTP/1.1" 200 1079 
[21/Feb/2017 15:33:54] "GET /variants/js/jquery.js HTTP/1.1" 200 1079 

Но когда я проверяю сайт ссылку, он показывает мне данные, упорядоченные в строках, но без форматирования таблицы вообще. Можете ли вы помочь мне определить, что я сделал неправильно, и как я могу исправить эту проблему.

Большое вам спасибо. ЭМГ

+0

Вы можете разместить обработанную разметку, а также. – khalid13

+0

Извините, но я этого не понял. Пожалуйста, объясните, что вы имеете в виду. Благодарю. – EMH

ответ

0

Вы, кажется, forgetten # в $("table_id").dataTable();

Это должно быть как:

$("#table_id").dataTable();<br> 
+0

Я пробовал, и он все еще не отображается, спасибо за исправление. – EMH