- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 CBV 新手。不知道为什么这不起作用...
View .py
class ItemDetailView(DetailView):
'''display an individual item'''
model = Item
template_name = 'boutique/item.html'
context_object_name = 'item'
# With model specified, following code would be redundant, wouldn't it?? However...
# def get_object(self):
# return get_object_or_404(Item, pk=self.kwargs.get('item_pk'))
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
# add categories for navbar link texts
context['categories'] = Category.objects.all()
print('\ncontext= ', context, '\n')
return context
/item_8/处的 AttributeError 通用详细信息 View ItemDetailView 必须使用 URLconf 中的对象 pk 或 slug 进行调用。
并且上下文没有被打印出来。
<小时/>如果我将 get_object
添加到代码中,它就可以正常工作:
class ItemDetailView(DetailView):
'''display an individual item'''
# model = Item
template_name = 'boutique/item.html'
# context_object_name = 'item'
def get_object(self):
return get_object_or_404(Item, pk=self.kwargs.get('item_pk'))
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
# add categories for navbar link texts
context['categories'] = Category.objects.all()
print('\ncontext= ', context, '\n')
return context
<小时/>
但是,如果我将 get_object
函数更改为:
def get_object(self):
obj = super().get_object()
obj = get_object_or_404(Item, pk=self.kwargs.get('item_pk'))
# obj = obj.filter(pk=self.kwargs.get('item_pk')) # doesn't work, same error
# obj = obj.get(pk=self.kwargs.get('item_pk')) # doesn't work, same error
return obj
ImproperlyConfigured at/item_8/ItemDetailView 缺少查询集。定义 ItemDetailView.model、ItemDetailView.queryset,或重写 ItemDetailView.get_queryset()。
我很困惑... DetailView 应该可以工作而无需定义 get_object
不?
url.py
app_name = 'boutique'
urlpatterns = [
# show index page
path('', views.IndexView.as_view(), name='index'),
# show a specific item
path('item_<int:item_pk>/', views.ItemDetailView.as_view(), name='item'),
# show categories of products for men or women
path('<slug:gender>/', views.CategoryListView.as_view(), name='show-all'),
# show a specific category for men or women
path('<slug:gender>/cat_<int:category_pk>/', views.CategoryListView.as_view(), name='category'),
# show a specific subcategory under a specific category for men or women
path('<slug:gender>/cat_<int:category_pk>/subcat_<int:subcategory_pk>/', views.CategoryListView.as_view(), name='subcategory'),
]
模型.py
class Item(models.Model):
'''Each item represents a product'''
category = models.ForeignKey(Category, on_delete=models.CASCADE)
subcategory = models.ForeignKey(
SubCategory, on_delete=models.CASCADE, null=True, blank=True)
name = models.CharField(max_length=100)
description = models.TextField(blank=True)
price = models.IntegerField(default='0')
discount = models.IntegerField(null=True, blank=True)
uploaded_date = models.DateTimeField(
auto_now_add=True, null=True, blank=True)
class Meta:
ordering = ['-uploaded_date']
def __str__(self):
return self.name
def discounted_price(self):
'''to calculate the price after discount'''
return int(self.price * (100 - self.discount) * 0.01)
def get_item_url(self):
return reverse('boutique:item', kwargs={'item_pk': self.pk})
项目.html
<!-- display each item in its own box -->
<div class="col-6 col-md-4 col-lg-3 px-1 px-sm-2 d-flex flex-column">
<!-- image anchor -->
<a href="{{ item.get_item_url }}">
<img class="rounded-sm" src="{{item.itemimage_set.first.image.url}}" width="100%"
alt=""></a>
<!-- /image anchor -->
<!-- item price tag -->
<div class="text-left p-1 mt-auto" style="font-size: 16px;">
<div class="font-weight-light pt-2">
<a href="{{ item.get_item_url }}" class="text-dark mb-1">{{item}}</a>
</div>
<div class="font-weight-lighter">
{% if item.discount %}
<p>
<strike class="text-muted">₽ {{item.price}}</strike>
<b class="text-danger">₽ {{item.discounted_price}}</b>
<small class="text-danger">(-{{item.discount}}%)</small>
</p>
{% else %}
<p>₽ {{item.price}}</p>
{% endif %}
</div>
</div>
<!-- /item price tag -->
</div>
最佳答案
您的第一个示例是正确的,您不需要显式定义 get_object()
但您应该使用 pk
参数而不是 item_pk
使用详细信息 CBV 时的 url 路径:
path('item_<int:pk>/', views.ItemDetailView.as_view(), name='item'),
因为默认情况下 get_object()
方法使用 self.kwargs["pk"]
来搜索对象。
如果您仍然想使用item_pk
,您需要在 View 中使用pk_url_kwarg
指定:
class ItemDetailView(DetailView):
pk_url_kwarg = 'item_pk'
来自docs :
The URLconf here uses the named group pk - this name is the default name that DetailView uses to find the value of the primary key used to filter the queryset.
If you want to call the group something else, you can set pk_url_kwarg on the view. More details can be found in the reference for DetailView
关于python - Django - DetailView - `get_object` 函数混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60113746/
我正在 Apple Developer 网站上查看适用于 iOS 的 SimpleDrillDown 示例:http://developer.apple.com/library/ios/#sample
我是新手 我的xcode版本是11.2.1,swift是5.1.2 当我在MasterView中使用NavigationView时,我有两个DetailView 我想在第一个DetailView关闭时
I am newbie on python django. when following Django Tutorial > Part04 > Generic View , i have troubl
我是 Django 的新手。有一个 html 页面 (project_details) 应该显示项目的标题和任务,但只显示项目的标题,而不是任务。任务存在,问题出在过滤器上!!! View .py 错
我有一个要显示为详细信息 View 的模型,我创建了一个 ListView ,该 ListView 有一个指向其详细信息 View 的链接。我没有收到任何错误,但模板没有呈现任何模型细节 链接到 De
我有点困惑,并希望利用 DetailView 功能使用外键作为我的过滤器来显示数据。基本上我的模型是这样的: class Category(models.Model): name = mode
我的模型事件有一个基于类的 DetailView,我想显示通过外键关联的类别条目。 模型.py class Event(models.Model): name = models.CharFie
我想返回用户相关记录。有人可以帮助我吗? 我的部分观点 class UserProfileDetailView(DetailView): model = get_user_model()
我正在尝试使用聚光灯结果引导用户到我的应用程序中的相应部分。 MainView 有几个按钮,允许转到应用程序的不同区域,其中之一是电话目录,位于它自己的 SplitViewController 内。
我正在尝试创建主细节 View 应用程序,但有点卡住了。 我有一个包含 100 个 DynamicPrototype Cells 的 tableView 显示 Bars,当我点击一个 cell 时,我
在应用程序中,我有两个模型,名为“类(class)”和“步骤”。每个步骤都属于一个类(class),每个类(class)又包含许多步骤。但是,我在为步骤创建详细 View 时遇到问题。例如,当我转到
我有 2 个模型,我得到了 IndexView使用 get_context_data 正常工作方法。然而我的 DetailView使用相同的技术是行不通的。我如何简单地将 2 个模型放入 Detail
我正在寻找一种优雅的方式来显示 Django 中所有可用的项目(不仅仅是选中的项目)DetailView , 同时对选中的样式进行样式化。 给定以下模型: class Topping(models.M
有没有简单的方法可以强制DetailView在 Yii2 中忽略其 attributes 中的这些字段列表,特别是 model是空的? 或者唯一的方法是定义 attributes 上的每个属性具有自己
我正在尝试在 View 文件中渲染图像。我的代码如下: $model, 'attributes' => [ 'id', 'name',
我收到以下错误: ImproperlyConfigured at /elearning/7447932a-6044-498a-b902-97cbdd0a4001/ DetailView is miss
在我的 DetailView 中,我想根据我的 url 中的 kwargs 获取对象,另外还检索它的所有相关(外键)值。 我用: queryset = Category.objects.select_
我正在制作一个将 PO 导出为 PDF 的采购订单系统,但我需要在上半部分显示来自买方和卖方的数据。我想并排放置 2 个 DetailView,每个都有 50% 的页面宽度。有可能的?到目前为止,我还
在浏览了几个谷歌搜索结果页面后,我仍然陷入同样的问题。我正在尝试在博客文章下方实现评论字段。我感谢任何提示和建议! 我正在 Django 中开发一个博客,该博客设置了第一个通用 ListView
我需要在 Django 中编写一个 DetailView。我实现了这个功能。但是,我需要添加更多数据以及上下文对象。我将如何实现这一目标。 我的一般观点是: class AppDetailsView(
我是一名优秀的程序员,十分优秀!