django从template.html获取价值

时间:2017-09-15 11:15:08

标签: python mysql django

我真的需要帮助......我一直在寻求帮助,并且在google上找了一眼我没找到任何东西......

我希望当我点击表名时,我想获取ID和号码,并获取有关该表的详细信息。

table_base.html

{% extends 'base.html' %}
{% block content %}
<br>
<div class="container">
<div class="jumbotron">
    <h1> {{ table_name }} List</h1>
    {% if list_tables %}
    <table>
    <thead>
        <th>Id</th>
        <th>Name</th>
        <th>Date</th>
    </thead>
        {% for list in list_tables %}
        <tr>
            <td><pre>{{ list.id }}</pre></td>
            <td><pre><a class="btn-link" href="{% url 'tables:details' list.id %}">{{ list.name }}</a></pre></td>
            <td> <pre>{{ list.date }}</pre></td>
        </tr>
    {% endfor %}
    </table>
        {% else %}
        <p> No Records Found</p>
    {% endif %}
</div>
</div>
{% endblock %}

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):
        if 'table_id' not in self.kwargs:
            return Crawledtables.objects.get(id=1)
        else:
            return Crawledtables.objects.get(id=self.kwargs['table_id'])



class Details(ListView):
    model = AllTables
    template_name = 'tables/table_list.html'
    context_object_name = 'details'
    paginate_by = 15
    queryset = AllTables.objects.all()

表/ urls.py

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

基本上我想得到table_id的值并在视图中创建一个新函数,我根据table_id得到表信息... 如果我有table_id 2我想要table_name2的数据... 如果我有table_id 3我想要table_name3的数据...等等。 我希望这些数据在我将创建的新模板上列出。

对于views.py:

这样的东西

我将得到table_id = 2然后我使用table_id来获取具有该id的表名。当我得到表名时,我会将它放在db_table中的models.py中以获取特定的表详细信息。

def details(request, table_id):
     tbl_name = Crawledtables.objects.get(id=table_id)
     AllTables._meta.db_table = tbl_name

     query = AllTables.objects.order_by('id')
     tbl_query = {'t_details': query}
     return render(request, 'tables/table_list.html', context=tbl_query)

提前谢谢

更新:

我几乎把它搞清楚了......但是我还有一件事情。

views.py

class Details(ListView):
    AllTables._meta.db_table = 'table_name_1'
    # AllTables._meta.db_table = 'table_name_2'
    # AllTables._meta.db_table = 'table_name_3'

    model = AllTables
    template_name = 'tables/table_list.html'
    context_object_name = 'details'
    paginate_by = 15
    queryset = AllTables.objects.all()

我需要根据我得到的table_id在这3个表之间切换 views.AboutDetail或table_base.html,当用户点击table_name

这样的事情:

class Details(ListView):
    if AboutDetail.pk_url_kwarg == 1:
         AllTables._meta.db_table = 'table_name_1'
    if AboutDetail.pk_url_kwarg == 2:
         AllTables._meta.db_table = 'table_name_2'
    if AboutDetail.pk_url_kwarg == 3:
         AllTables._meta.db_table = 'table_name_3'
    else:
         pass

0 个答案:

没有答案