首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用基于类的视图时在Django中获取绝对URL

使用基于类的视图时在Django中获取绝对URL
EN

Stack Overflow用户
提问于 2013-01-05 17:34:08
回答 5查看 25.6K关注 0票数 9

您好,我正在迁移我的应用程序使用基于类的视图,而不是基于函数的视图。在我的旧代码中,我能够以这种方式获得与函数视图相关的对象的绝对URL:

代码语言:javascript
运行
复制
class Category(models.Model):
    name = models.CharField(max_length=100,unique=True)
    slug = models.SlugField(unique=True)
    description = models.TextField()
    parent = models.ForeignKey('self',null=True,blank=True)

    def get_absolute_url(self):
        return reverse('blog.views.showcategory',args=[str(self.slug)])

我找不到为了得到相同的结果,我应该在get absolute url函数中做什么更改。

这是我新的基于类的视图

代码语言:javascript
运行
复制
class CategoryView(ListPosts):
    template_name = "postlist.html"
    context_object_name="posts"
    def get_queryset(self):
         return Post.objects.filter(category__slug=self.kwargs['slug']).order_by('created')

谢谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-01-05 19:29:12

您应该始终为您的URL指定一个名称,并引用它:

代码语言:javascript
运行
复制
url(r'/category/(?P<slug>\w+)/$', CategoryView.as_view(), name='category_view'),

现在:

代码语言:javascript
运行
复制
@models.permalink
def get_absolute_url(self):
    return ('category_view', (), {'slug': self.slug})

注意,我使用了固定链接装饰器,它的作用与调用reverse相同,但更简洁一些。

票数 24
EN

Stack Overflow用户

发布于 2014-02-05 22:38:01

下面是我的get_absolute_url配置:

urls.py

代码语言:javascript
运行
复制
urlpatterns = patterns('',
    url(r'^products/(?P<slug>[\w\d\-\_]+)/$', views.ProductView.as_view(), name='product'),
    )

models.py

代码语言:javascript
运行
复制
def get_absolute_url(self):
    return reverse('products:product', kwargs={'slug':self.slug})

我的产品在"products“应用程序下,所以url名称空间是”urls.py :product“

票数 12
EN

Stack Overflow用户

发布于 2018-09-15 15:35:23

这个问题的2018年答案与@Aaron的答案基本相同,但为了快速访问,这里是:

代码语言:javascript
运行
复制
def get_absolute_url(self):
    from django.urls import reverse
    return reverse('people.views.details', args=[str(self.id)])

来自https://docs.djangoproject.com/en/2.1/ref/models/instances/#get-absolute-url

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14170473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档