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

Joh*_*ash 2 python django django-templates django-urls django-views

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

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

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

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

在views.py中我有:

def selected(request, location)
Run Code Online (Sandbox Code Playgroud)

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

jpi*_*pic 5

您应该从“可用假期”模板链接到地点页面。

首先,在 url 定义中添加一个“name”参数:

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

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

{% url selected_holidays 'Europe' %}
Run Code Online (Sandbox Code Playgroud)

当然,在 for 循环中使用位置变量:

{% for location in locations %}
    <a href="{% url selected_holidays location %}">{{ location }}</a>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

如果 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,))
Run Code Online (Sandbox Code Playgroud)

然后在模板中:

{% for location in locations %}
    <a href="{{ location.get_absolute_url }}">{{ location }}</a>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

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

如果你想向前兼容,请加载未来的 url 标签,如下所示:

{% load url from future %}
Run Code Online (Sandbox Code Playgroud)

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

{% url 'selected_holidays' 'Europe' %}
Run Code Online (Sandbox Code Playgroud)

嗯,我想你已经有了一些开胃菜。您还应该仔细阅读 Django url 手册,以了解出现问题时在哪里:) https://docs.djangoproject.com/en/dev/topics/http/urls/