2016-01-17 3 views
0

Я пытаюсь использовать таблицы django 2 учебника (Link), и я застрял в этой ошибке.django tables 'module' объект не имеет атрибута 'index'

Edit: это происходит, когда я пытаюсь получить доступ 127.0.0.1:8000/tables/

Я застрял в этой части в учебнике: «Хук вид в ваших URL-адресов, и загрузите странице, вы должны увидеть: « Он не отображает эту таблицу и вместо этого отображает ошибку, показанную ниже.

Я пробовал решения, перечисленные в других вопросах, но это не помогло. Может кто-то мне помочь, пожалуйста?

Вот код: https://github.com/karbfg10k/temp-work/tree/master/IMedMonitor/IMed

А вот ошибка

Unhandled exception in thread started by <function wrapper at 0x7fa9216456e0> 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/django/utils/autoreload.py", line 226, in wrapper 
    fn(*args, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/runserver.py", line 116, in inner_run 
    self.check(display_num_errors=True) 
    File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 426, in check 
    include_deployment_checks=include_deployment_checks, 
    File "/usr/local/lib/python2.7/dist-packages/django/core/checks/registry.py", line 75, in run_checks 
    new_errors = check(app_configs=app_configs) 
    File "/usr/local/lib/python2.7/dist-packages/django/core/checks/urls.py", line 10, in check_url_config 
    return check_resolver(resolver) 
    File "/usr/local/lib/python2.7/dist-packages/django/core/checks/urls.py", line 19, in check_resolver 
    for pattern in resolver.url_patterns: 
    File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 33, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py", line 417, in url_patterns 
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
    File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 33, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py", line 410, in urlconf_module 
    return import_module(self.urlconf_name) 
    File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/home/karthik/Code/MedicalDevices/IMedMonitor/IMed/IMed/urls.py", line 20, in <module> 
    url(r'^tables/', include('tables.urls')), 
    File "/usr/local/lib/python2.7/dist-packages/django/conf/urls/__init__.py", line 52, in include 
    urlconf_module = import_module(urlconf_module) 
    File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/home/karthik/Code/MedicalDevices/IMedMonitor/IMed/tables/urls.py", line 6, in <module> 
    url(r'^$', views.index, name='index'), 
AttributeError: 'module' object has no attribute 'index' 
+2

У вас есть метод индекса закомментирован –

+0

Спасибо, но как если бы я раскомментировал его, он просто отобразил HttpResponse, как мне заставить его отображать таблицы вместо этого? –

ответ

1

Раскоментируйте индексный метод, как Джоэл заявил, а затем сделать HTML-страницу, как вы сделали в методе людей, передавая таблицу данных.

https://docs.djangoproject.com/en/1.9/intro/tutorial03/

О 3/4 вниз страницы (немного изменен в соответствии с вашим примером):

def index(request): 
    table_object = ...... 
    template = loader.get_template('correct_page_here') 
    context = { 
     'table_obj': table_object, 
} 
    return HttpResponse(template.render(context, request)) 

В соответствующей странице HTML добавить соответствующие теги для визуализации таблицу

https://django-tables2.readthedocs.org/en/latest/pages/template-tags.html

Я изменил ваши файлы модели на это:

from __future__ import unicode_literals 

from django.db import models 

data = [ 
    {"name": "Me!"}, 
    {"name": "Myself!"}, 
] 

# Create your models here. 
class Person(models.Model): 
    name = models.CharField(verbose_name="full name", max_length = 20) 

После изменения файла модели убедитесь, что вы запустите

python manage.py makemigrations && python manage.py migrate 

Ваши столы/urls.py файл:

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
    url(r'^people/$', views.people, name='people'), 
] 

Ваш views.py файл:

from django.shortcuts import render 
from django.http import HttpResponse 
from models import Person 


def index(request): 
    return HttpResponse("Hello, world. You're at the polls index.") 


def people(request): 
    return render(request, "people.html", {"people": Person.objects.all()}) 
    table = Person(data) 

Установленные приложения в IMed/IMed/settings.py to:

# Application definition 

INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'django_tables2', 
    'IMed', 
    'tables', 
] 

Теперь, если вы запустите сервер и зайдите сюда:

http://127.0.0.1:8000/tables/people/

Люди просмотра будет работать, и вы можете копировать один и тот же процесс в индексе, как у вас есть в людях.

+0

Извините, я новичок в django, поэтому у меня все еще есть пара вопросов. Я изменил «correct_page_here» на таблицы/people.html. что мне делать с table_object = bit? Кроме того, я уже размещал {% load render_table из django_tables2%} на странице html, поэтому мне не нужно было добавлять теги вправо? –

+0

Привет, спасибо за помощь!, Я могу заставить страницы людей работать, но таблица, похоже, ничего не делает. Только идентификатор и полное имя отображаются в виде текста, таблица не отображается. Есть идеи, почему это так? Я обновил github кодом –

+0

Привет, есть ли данные в вашей таблице? Вы можете подтвердить, поставив точку останова в методе people в представлениях и посмотрев, что хранится в Person.objects.all() – BenJ