Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 来自视图的Django permalink,带有可选参数_Python_Django_Url_Permalinks - Fatal编程技术网

Python 来自视图的Django permalink,带有可选参数

Python 来自视图的Django permalink,带有可选参数,python,django,url,permalinks,Python,Django,Url,Permalinks,我尝试使用一个视图来解析两个url模式,方法是在视图定义中使用可选参数。 我正在遵循和的建议 下面是我的url模式代码url.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', na

我尝试使用一个视图来解析两个url模式,方法是在视图定义中使用可选参数。 我正在遵循和的建议

下面是我的url模式代码url.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'),
)
只要根据url模式显示模板,一切都正常。 但是,当我尝试使用model permalinks显示链接时,它会中断。我遵循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? 我做错什么了吗


谢谢

您在
get\u absolute\u 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

get\u absolute\u 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函数。这不是一种使用permalink()的方法吗?它应该和permalink一样好,这也是我个人用来为我自己的Django应用程序获取URL的方法。老实说,我不太清楚那
@models.permalink
decorator是用来做什么的,但是上面的函数应该就是你所需要的,permalink实际上就是它所说的“永久链接”。这肯定会奏效,但我不会使用permalink函数。这不是一种使用permalink()的方法吗?它应该和permalink一样好,这也是我个人用来为我自己的Django应用程序获取URL的方法。老实说,我不太清楚那
@models.permalink
decorator是用来做什么的,但是上面的函数应该就是你所需要的,permalink实际上就是它所说的“永久链接”