Django如何指定基本URL

时间:2014-05-03 14:55:57

标签: html django

所以应该有一个非常基本的方法来做到这一点,但不幸的是我似乎无法找到它。

如何将Href链接设置为指向“基本网站网址”+“链接”,而不是将链接添加到当前页面。

即。如果我在www.example.com/content1 /

我希望搜索功能转到www.example.com/search/

而不是www.example.com/content1/search

我可以指定“www.example.com/search/”但是如果它在本地部署页面,我最终会得到一堆链接到不存在的页面,反之亦然。如何使用DJango指定The Base托管URL(无论服务器正在运行,主机名,当前服务器IP,本地主机等)。

3 个答案:

答案 0 :(得分:3)

执行此操作的最佳方法是name your urls,然后使用url template tag。示例如下:

首先,为您的观点命名。使用类似的东西:

urlpatterns = [
    ...
    url(r'^search/$', views.search_view, name="search"),
    ...
]

在此示例中,您已获得example.com/search/视图的网址。它被命名为“搜索”,可以使用url模板标记并使用reverse()函数。

接下来,在您的模板中,使用您的网址名称为url标记:

<a href="{% url 'search' %}">Search</a>

答案 1 :(得分:1)

您不应该添加基本网址网址。对你的href来说,暗示着。确保href的前缀为&#39; /&#39;设置和绝对路径,没有&#39; /&#39;为亲戚。

 <a href="/">home</a>

相同
 <a href="http://www.mywebsite.com/">home</a>

并且无论你在哪个子目录中都可以使用

如果您在主页上并使用以下链接:

<a href="sample">sample</a>

它实际上会相等:

 <a href="http://www.mywebsite.com/sample">sample</a>

但页面http://www.mywebsite.com/sample上使用的相同链接将等同于:

 <a href="http://www.mywebsite.com/sample/sample">sample</a>

使用:

<a href="/sample">sample</a>

无论在网站的哪个位置使用,都将始终等同于以下内容:

 <a href="http://www.mywebsite.com/sample">sample</a>

如果您使用django,请考虑使用建议Alex的网址模板标记:

https://docs.djangoproject.com/en/dev/ref/templates/builtins/#url

答案 2 :(得分:0)

将链接指向/search

/开头的任何链接都与域根相关(例如,http://example.com/),而任何其他相对链接都与当前网址相关。