Django URL 调度程序示例 - 将 url 从视图传递到另一个视图

Posted

技术标签:

【中文标题】Django URL 调度程序示例 - 将 url 从视图传递到另一个视图【英文标题】:Django URL dispatcher example - pass url from view to another 【发布时间】:2012-03-30 04:15:34 【问题描述】:

谁有一个快速的 url 调度程序示例?我查看了 Django 文档,但我发现没有一个完整的示例可以向您展示视图中的一切是如何工作的。

具体来说,我正在尝试将“url”从一个视图传递到另一个视图。例如,我正在尝试制作一个假期网站:如果单击“可用假期”视图中名为“欧洲”的按钮,我想转到 www.example.com/selected/europe,其中显示了所有欧洲假期 而如果单击可用假期视图中名为“澳大利亚”的按钮,我想转到显示类似澳大利亚假期的 www.example.com/selected/australia。

到目前为止,在 url.py 我有:

(r'^selected/(?P<location>\w+)/$', 'app.views.selected'),

在views.py中我有:

def selected(request, location)

我不知道从那里去哪里。 此外,事情将如何从“可用假期”视图转移到“选定”视图...

【问题讨论】:

这个问题很不清楚。你是什​​么意思,“从那里去哪里”?您已成功将 location 参数传递到您的视图中。你还需要什么? 我主要对如何将在不同视图中选择的按钮传递到所选视图中感到困惑.. 嗨,约翰尼,偶尔回答别人的问题会让你学到很多东西。有时间试试。你现在是 23-0。 【参考方案1】:

从“可用假期”模板中,您应该链接到位置页面。

首先,在您的 url 定义中添加一个“名称”参数:

(r'^selected/(?P<location>\w+)/$', 'app.views.selected', name='selected_holidays'),

然后,在“可用假期”模板中,链接如下:

% url selected_holidays 'Europe' %

当然,在 forloop 中使用 location 变量:

% for location in locations %
    <a href="% url selected_holidays location %"> location </a>
% endfor %

如果 location 是一个模型,那么你应该在模型中添加一个 get_absolute_url 方法,例如:

from django.core import urlresolvers

class Location(models.Model):
    # ... [snip]
    def get_absolute_url(self):
        return urlresolvers.reverse('selected_holidays', args=(self.location_name,))

然后在模板中:

% for location in locations %
    <a href=" location.get_absolute_url "> location </a>
% endfor %

在这种情况下,如果有意义的话,将 url 的名称从“selected_holidays”更改为“location_detail”——这在 Django 中是相当标准的。

如果你想向前兼容,就这样加载未来的 url 标签:

% load url from future %

然后,使用带引号的命名 url 字符串:

% url 'selected_holidays' 'Europe' %

嗯,我想你在这里有一些首发。您还应该仔细阅读 Django urls 手册,以了解出现问题的情况:) https://docs.djangoproject.com/en/dev/topics/http/urls/

【讨论】:

感谢您的全面解释。我觉得你的回答应该得到更多的认可。

以上是关于Django URL 调度程序示例 - 将 url 从视图传递到另一个视图的主要内容,如果未能解决你的问题,请参考以下文章

django-url调度器-中级篇

django url调度

django-url调度器-高级篇

Django后端开发学习笔记URL调度器

Django后端开发学习笔记URL调度器

反向 Django 管理 URL