我正在处理我正在处理的Django项目上的奇怪行为。我有一个项目表,我正在使用我的网址中的项目ID。我正在使用get_absolute_url创建项目网址,但是,网址会附加一个“0”,例如http://127.0.0.1:8000/item/10/
,其中网址应为http://127.0.0.1:8000/item/1/
而http://127.0.0.1:8000/item/20/
代替{{ 1}}
我的模型如下:
http://127.0.0.1:8000/item/2/
我的观点:
class Item(TimeStampedModel):
name = models.CharField(_('name'), max_length=254)
slug = AutoSlugField(populate_from='name')
image = models.ImageField(_('image'), upload_to='items/')
price = models.IntegerField(_('price per unit'))
unit_type = models.IntegerField(_('unit type'), choices=UNIT_CHOICIES, default=1)
unit_increment = models.DecimalField(_('unit increment'), max_digits=4, decimal_places=2)
unit_min = models.DecimalField(_('unit minimum'), max_digits=4, decimal_places=2)
unit_max = models.DecimalField(_('unit maximum'), max_digits=4, decimal_places=2)
quantity = models.DecimalField(_('quantity'), max_digits=4, decimal_places=2, default=0.00)
class Meta:
verbose_name = _('item')
verbose_name_plural = _('items')
ordering = ('name',)
def __unicode__(self):
return self.name
@models.permalink
def get_absolute_url(self):
return('detailed_item', (), {'pk': self.pk})
和我的网址:
class DetailedItemView(DetailView):
model = Item
pk_url_kwarg = 'pk'
template_name = 'item/item_detail.html'
context_object_name = 'item'
在我正在使用的模板中:
urlpatterns = patterns('',
url(r'^(?P<pk>)\d+/$', DetailedItemView.as_view(), name='detailed_item'),
)
Django版本是1.7.1 python 2.7.6
答案 0 :(得分:2)
这是您的网址格式:
url(r'^(?P<pk>)\d+/$', DetailedItemView.as_view(), name='detailed_item'),
\d
位于)
组之外,导致额外的号码。改为
url(r'^(?P<pk>\d+)/$', DetailedItemView.as_view(), name='detailed_item'),
Django tutorial article on the URL dispatcher和relevant section。