Django_tables2 ValueError:期望的表或查询集,而不是str

问题描述 投票:-1回答:1

我正在使用django_tables2标记在模板中呈现{% render_table table %}表,但出现错误:

localserver error:
Internal Server Error: /keymanager
Traceback (most recent call last):
  File "C:\Users\Rigelsolutions\source\repos\management_information_system\management_information_system\mis_env\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "C:\Users\Rigelsolutions\source\repos\management_information_system\management_information_system\mis_env\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\Rigelsolutions\source\repos\management_information_system\management_information_system\mis_env\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\Rigelsolutions\source\repos\management_information_system\management_information_system\IENG_MIS\views.py", line 29, in issuekey
    return render(request, 'keymanagement.html', {'form': form})
  File "C:\Users\Rigelsolutions\source\repos\management_information_system\management_information_system\mis_env\lib\site-packages\django\shortcuts.py", line 36, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "C:\Users\Rigelsolutions\source\repos\management_information_system\management_information_system\mis_env\lib\site-packages\django\template\loader.py", line 62, in render_to_string
    return template.render(context, request)
  File "C:\Users\Rigelsolutions\source\repos\management_information_system\management_information_system\mis_env\lib\site-packages\django\template\backends\django.py", line 61, in render
    return self.template.render(context)
  File "C:\Users\Rigelsolutions\source\repos\management_information_system\management_information_system\mis_env\lib\site-packages\django\template\base.py", line 171, in render
    return self._render(context)
  File "C:\Users\Rigelsolutions\source\repos\management_information_system\management_information_system\mis_env\lib\site-packages\django\template\base.py", line 163, in _render
    return self.nodelist.render(context)
  File "C:\Users\Rigelsolutions\source\repos\management_information_system\management_information_system\mis_env\lib\site-packages\django\template\base.py", line 937, in render
    bit = node.render_annotated(context)
  File "C:\Users\Rigelsolutions\source\repos\management_information_system\management_information_system\mis_env\lib\site-packages\django\template\base.py", line 904, in render_annotated
    return self.render(context)
  File "C:\Users\Rigelsolutions\source\repos\management_information_system\management_information_system\mis_env\lib\site-packages\django_tables2\templatetags\django_tables2.py", line 144, in render
    raise ValueError("Expected table or queryset, not {}".format(klass))
ValueError: Expected table or queryset, not str
[16/Oct/2019 22:42:32] "GET /keymanager HTTP/1.1" 500 117360

models.py

K

tables.py

import django_tables2 as tables
from .models import issuekeys

class issued_table(tables.Table):
    model=issuekeys
    template_name = "django_tables2/bootstrap.html"

    fields=('keynumber', 'workorder','contrator','assigned_name','assigned_contact','date_to_return',)

views.py

from django.shortcuts import render, redirect

from django.contrib.auth.decorators import login_required
from django.http import HttpResponseRedirect
from django_tables2 import RequestConfig
from .forms import issuekeyform
from .tables import issued_table
from .models import issuekeys



@login_required()
def landing_page(request):
        return render(request, 'landing_page.html')
def login(request):
    return render(request, 'login.html')
def issuekey(request):
    if request.method=='POST':
        global form
        form= issuekeyform(request.POST)
        if form.is_valid():
            post = form.save(commit=False)

            post.save()
        return HttpResponseRedirect('/keymanager')
    else:
            form = issuekeyform()

    return render(request, 'keymanagement.html', {'form': form})



def issuetable():
     table = issued_table(issuekeys.objects.all())
     RequestConfig(request, paginate={'per_page': 10}).configure(table)
     return render(request, "keymanagement.html", {'table': table})

kemanagement.html

{% load widget_tweaks %}
{% load bootstrap4 %}
{% bootstrap_css %}
{% bootstrap_javascript jquery='full' %}
{% load i18n %}

{% load render_table from django_tables2 %}
<div class="col-4">
                <h4 class="text-primary" style="text-align:left; font-family:'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif" >Register Key:</h4>
                <div class="row" style="margin-top: 1em; margin-left: 1mm">
                    {% render_table table %}
                </div>
            </div>

我正在使用:

django_tables2 version: 2.1.1
django version: 2.2.6
python django django-tables2
1个回答
0
投票

错误堆栈跟踪显示在中间的某个位置:

...
  File "C:\Users\Rigelsolutions\source\repos\management_information_system\management_information_system\IENG_MIS\views.py", line 29, in issuekey
    return render(request, 'keymanagement.html', {'form': form})
...

注意它如何引用功能issuekey,但是在您的视图中,您仅显示了功能issuetable

所以您要么显示了不同的视图函数,要么不小心显示了不同的错误堆栈跟踪,因为这两个不属于一起。

您能否更新视图或错误堆栈跟踪,以便我们进一步帮助您?

© www.soinside.com 2019 - 2024. All rights reserved.