如何在模板中访问主键(来自数据库)?

时间:2017-08-14 18:35:49

标签: python django

在我的项目中,我想显示一个类别页面,列出特定类别中的所有产品。类别页面上的每个列表都会将访问者链接到该特定产品。

产品视图正常运行。使用url:/ prod / 999访问产品,其中999是django创建的记录号。

对于类别页面,我有数据,我正在使用我的模板。我可以在模板中访问产品名称,描述等..但是在创建产品详细信息页面的链接时,我需要该产品记录。不幸的是,它似乎没有传递给模板。

如何传递记录号码" pk"到我的模板?

这是我的观看代码:

from get_data.models import ShareASale_Data, CategorySummed
类CategoryView(generic.ListView):

model = ShareASale_Data
template_name = 'summary_page/category.html'
context_object_name="the_records"
paginate_by = 10

def get_queryset(self, **kwargs):

    # First Get the Actual Category from the Category db.
    cat_summed = CategorySummed.objects.get(category_url = self.kwargs['s_cat']) 

    # Use the category from the previous line to fetch the product records
    return ShareASale_Data.objects.filter(merch_category = cat_summed.category )  
到目前为止,模板并不多。这是我尝试访问pk的地方:

{% for x in the_records  %}
  <h3><a href='/prod/'{{x.id}}>{{x.name}}</a></h3>
{% endfor %}

1 个答案:

答案 0 :(得分:3)

您已将模板变量放在href属性中的结束引号之外,因此浏览器不会在链接中使用它。把它放进去。

  "token_type": "Bearer",
  "scope": "User.Read",
  "expires_in": 3599,
  "ext_expires_in": 0,
  "access_token": "eyJ0eXAiO ...",
  "refresh_token": "OAQABAAAAAAA9kTklh ..."
  "id_token": "eyJ0eXAiOiJKV1QiLC ..."

但请注意,这不是你应该如何在模板中创建链接;你应该使用at_hash标签。假设您的详细信息URL定义如下:

  "aud": "... GUID ... ",
  "iss": "https://login.microsoftonline.com/.../v2.0",
  "iat": 1502324474,
  "nbf": 1502324474,
  "exp": 1502328374,
  "aio": "ATQA ... 7liW+Hb",
  "name": "... some name ... ",
  "nonce": "... GUID ...",
  "oid": "... GUID ...",
  "preferred_username": "... some preferred name ...",
  "sub": "KIuLx ... ifCaZUUi3b",
  "tid": "... GUID ...",
  "ver": "2.0"

你会这样做:

<a href='/prod/{{x.id}}'>{{x.name}}</a>
                       ^ here