django 永久链接获取变量

发布于 2024-09-18 07:28:01 字数 113 浏览 4 评论 0原文

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

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

Is there a way to add get variables into the url while using permalink?

So www.example.com/1999/news/?filter=entertainment

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千纸鹤带着心事 2024-09-25 07:28:01

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

也就是说,有一种非常粗鲁且非 Django 的方法可以返回一个 URL,就像您从模型的 get_absolute_url() 方法中指定的 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+)

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

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

# urls.py
url(r'^news/(?P<model_id>\d+)/

不过, Correct_view 必须从请求中提取 GET 参数。

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

, 'dummy_url', {}, name = 'dummy_url'), # views.py def dummy_url(request, *args, **kwargs): pass

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

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


不过, Correct_view 必须从请求中提取 GET 参数。

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

, 'correct_view', {}, name = 'correct_view'), # views.py def correct_view(request, *args, **kwargs): # do the required stuff.

不过,Correct_view 必须从请求中提取GET 参数。

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

, 'dummy_url', {}, name = 'dummy_url'), # views.py def dummy_url(request, *args, **kwargs): pass

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

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

不过,Correct_view 必须从请求中提取GET 参数。

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

IMHO Permalink should not contain a query parameter. It doesn't quite sound right.

That said, there is a very crufty and un-Django like way to return an URL like the one you have specified from the get_absolute_url() method of a model.

Steps

First add a dummy URL and corresponding do-nothing view. For e.g.

# 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+)

This dummy will only serve to generate the URL. I.e. you will get the correct URL if you execute instance.get_absolute_url().

You will have to add another, proper URL configuration and a matching view to actually display the instance page when the URL is called. Something like this.

# urls.py
url(r'^news/(?P<model_id>\d+)/

The correct_view will have to extract the GET parameter from the request though.

Note how similar the dummy and proper URL configurations are. Only the query parameter is extra in the dummy.

, 'dummy_url', {}, name = 'dummy_url'), # views.py def dummy_url(request, *args, **kwargs): pass

This dummy will only serve to generate the URL. I.e. you will get the correct URL if you execute instance.get_absolute_url().

You will have to add another, proper URL configuration and a matching view to actually display the instance page when the URL is called. Something like this.


The correct_view will have to extract the GET parameter from the request though.

Note how similar the dummy and proper URL configurations are. Only the query parameter is extra in the dummy.

, 'correct_view', {}, name = 'correct_view'), # views.py def correct_view(request, *args, **kwargs): # do the required stuff.

The correct_view will have to extract the GET parameter from the request though.

Note how similar the dummy and proper URL configurations are. Only the query parameter is extra in the dummy.

, 'dummy_url', {}, name = 'dummy_url'), # views.py def dummy_url(request, *args, **kwargs): pass

This dummy will only serve to generate the URL. I.e. you will get the correct URL if you execute instance.get_absolute_url().

You will have to add another, proper URL configuration and a matching view to actually display the instance page when the URL is called. Something like this.

The correct_view will have to extract the GET parameter from the request though.

Note how similar the dummy and proper URL configurations are. Only the query parameter is extra in the dummy.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文