django请求URL中的param进入不工作的视图

时间:2017-09-22 16:31:44

标签: python html mysql django

我试图从table_id请求table_base.html并且没有返回任何内容。

我的table_base.html

<div class="container">
<div class="jumbotron">
    <h1> {{ table_name }} List</h1>
    {% if list_tables %}
    <table class="table table-bordered sortable">
    <thead>
        <th>Id</th>
        <th>Name</a></th>
        <th>Date</a></th>
        <th>Search Button</th>
    </thead>
        {% for list in list_tables %}
        <tr>
            <td><a href="#" >{{ list.id }}</a></td>
            <td>
                <a href="{% url 'tables:addview' table_id=list.id %}" name="table_name">{{ list.name }}</a>
            </td>
            <td>{{ list.date }}</td>
            <td><a href="#">Search</a></td>
        </tr>
    {% endfor %}
    </table>
        {% else %}
        <p> No Records Found</p>
    {% endif %}
</div>
</div>

这是我的tables/urls.py

urlpatterns = [
    url(r'^$', views.table_base, name='tables'),
    url(r'^(?P<table_id>\d+)$', views.AboutDetail.as_view(), name='details'),
    url(r'^(?P<table_id>\d+)/details$', views.addview, name='addview')
]

这是我的tables/views.py

def table_base(request):
    table_name = Crawledtables._meta.db_table
    list_tables = Crawledtables.objects.order_by('id')
    return render(request, 'tables/table_base.html', {'table_name': table_name,
                                                      'list_tables': list_tables})


class AboutDetail(DetailView):
    model = Crawledtables
    pk_url_kwarg = 'table_id'
    template_name = 'tables/table_list.html'

    def __init__(self, **kwargs):
        super(AboutDetail, self).__init__(**kwargs)

    def get_object(self, **kwargs):
        if 'table_id' not in self.kwargs:
            return Crawledtables.objects.get(id=1)
        else:
            return Crawledtables.objects.get(id=self.kwargs['table_id'])


def addview(request, table_id):
    q = request.GET.get('table_id')
    print q

    table_name = Crawledtables.objects.get(id=q)
    print table_name
    AllTables._meta.db_table = table_name.name
    tbl_detail = AllTables.objects.order_by('id')

    return render(request, 'tables/table_list.html', {'details': tbl_detail})

它有效1次。当我选择第一个表(id为1的表)时,它会给我所有信息。当我尝试选择另一个表时,它会给我这个错误:

InternalError: (1054, u"Unknown column 'table_name.id' in 'field list'")

我用print打印一切。它显示出良好的反应。但最后它只是碰到了我的错误1054.我一次只能看到1个表格的详细信息。如果我想看另一张桌子。我必须重新启动服务器。

1 个答案:

答案 0 :(得分:1)

您似乎没有运行此命令

python manage.py makemigrations <app_name>
python manage.py migrate

您的桌子尚未创建