Django将0添加到pk

时间:2014-11-07 05:04:39

标签: python django

我正在处理我正在处理的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

1 个答案:

答案 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 dispatcherrelevant section