【问题标题】:Django permalink from view with optional parameters带有可选参数的视图中的 Django 永久链接
【发布时间】:2011-12-22 20:23:20
【问题描述】:

我正在尝试使用一个视图来解析两种 url 模式,方法是在视图定义中使用可选参数。 我正在关注this postthis other question 的建议。

这是我的 url 模式代码 urls.py

urlpatterns = patterns('myapp.views',
    url(r'^(?P<slug>[\w-]+)/$', 'my_view', name='main_url'),
    url(r'^(?P<slug>[\w-]+)/(?P<optional>[\w-]*)/$', 'my_view', name='optional_url'),
)

以及视图的定义:

def my_view(request, slug, optional=None):

就根据 url 模式显示模板而言,一切正常。 但是,当我尝试使用模型永久链接显示链接时,它会中断。我正在按照 django 文档中的说明获取模型绝对 url 的方式。

这是我的模型的代码:

class MyModel(models.Model):
    name = models.CharField(max_length=128)
    slug = models.CharField(max_length=32)

    @models.permalink
    def get_absolute_url(self):
        return ('main_url', [self.slug])

问题在于 get_absolute_url 返回一个带有两个参数的 url。所以我得到了类似这个 domain.com/slug// 而不是这个 domain.com/slug/

如何在没有第二个参数的情况下获取绝对 url? 是不是我做错了什么?

谢谢

【问题讨论】:

    标签: python django url permalinks


    【解决方案1】:

    您在get_absolute_url 函数中返回一个列表,这就是您获得两个参数的原因。 你可以这样做:

    class MyModel(models.Model):
        name = models.CharField(max_length=128)
        slug = models.CharField(max_length=32)
    
        @models.permalink
        def get_absolute_url(self):
            return "/%s/" % self.slug
    

    【讨论】:

    • 坦克奥莱。这肯定会起作用,但我不会使用永久链接功能。这难道不是一种使用 permalink() 使其工作的方法吗?
    • 那个应该和永久链接一样好,我个人用它来获取我自己的 Django 应用程序的 url。老实说,我不太确定 @models.permalink 装饰器的用途,但上面的功能应该是你所需要的,永久链接实际上就是它所说的“永久链接”
    猜你喜欢
    • 2021-06-04
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 2011-03-11
    相关资源
    最近更新 更多