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 重定向?