1

有没有办法在使用永久链接时将 get 变量添加到 url 中?

所以 www.example.com/1999/news/ ?filter=entertainment

4

1 回答 1

1

恕我直言,永久链接不应包含查询参数。听起来不太对劲。

也就是说,有一种非常粗鲁且不像 Django 的方式来返回一个 URL,就像你从get_absolute_url()模型的方法中指定的那样。

脚步

首先添加一个虚拟 URL 和相应的无操作视图。例如

# models.py
class MyModel(models.Model):
    ...
    @models.permalink
    def get_absolute_url(self):
        return ('dummy_url', [str(self.id), self.filter])

# urls.py
url(r'^news/(?P<model_id>\d+)/\?category=(?P<category>\w+)$', 
    'dummy_url', {}, name = 'dummy_url'),

# views.py
def dummy_url(request, *args, **kwargs):
    pass

此虚拟对象仅用于生成URL。即,如果您执行,您将获得正确的 URL instance.get_absolute_url()

您必须添加另一个正确的URL配置和匹配的视图,以便在调用 URL 时实际显示实例页面。像这样的东西。

# urls.py
url(r'^news/(?P<model_id>\d+)/$', 
    'correct_view', {}, name = 'correct_view'),

# views.py
def correct_view(request, *args, **kwargs):
    # do the required stuff.

correct_view不得不从中提取GET参数request

请注意虚拟和正确的 URL 配置是多么相似。只有查询参数在虚拟中是额外的。

于 2010-09-08T06:56:08.400 回答