Django如何指定一个基本的url

Posted

技术标签:

【中文标题】Django如何指定一个基本的url【英文标题】:Django how to specify a base url 【发布时间】:2014-06-20 04:36:58 【问题描述】:

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

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

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

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

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

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

【问题讨论】:

***.com/questions/2345708/… 这也可能有帮助:github.com/lalzada/django-baseurl 我做了 【参考方案1】:

使链接指向/search

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

【讨论】:

【参考方案2】:

最好的方法是使用name your urls,然后使用url template tag。示例如下:

首先,说出你的观点。使用类似的东西:

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

在此示例中,您已获得 example.com/search/ 视图的 url。它被命名为'search',可以使用url模板标签和reverse()函数。

接下来,在您的模板中,使用带有您的网址名称的url 标签:

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

【讨论】:

是否可以在模板中将字符串“% url 'search' %”与其他字符串连接起来?【参考方案3】:

您不需要将“基本网站网址”添加到您的 href,这是暗示的。确保 href 以 '/' 为前缀以设置和绝对路径,而没有以'/' 为相对路径。

 <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,请考虑使用 url 模板标签作为 Alex 建议:

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

【讨论】:

以上是关于Django如何指定一个基本的url的主要内容,如果未能解决你的问题,请参考以下文章

当指定的对象不存在时,如何从 Django DetailView 重定向?

在 Heroku 上的 Django 应用程序中为 CORS 指定 URL

Django的路由设置

为 css 指定基本 url

Django框架-路由层

Django RedirectView