有没有办法在使用永久链接时将 get 变量添加到 url 中?
所以 www.example.com/1999/news/ ?filter=entertainment
有没有办法在使用永久链接时将 get 变量添加到 url 中?
所以 www.example.com/1999/news/ ?filter=entertainment
恕我直言,永久链接不应包含查询参数。听起来不太对劲。
也就是说,有一种非常粗鲁且不像 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 配置是多么相似。只有查询参数在虚拟中是额外的。