23

在 Django 模板中,上下文中是否有一个变量(例如{{ BASE\_URL }}, {{ ROOT\_URL }},或者{{ MEDIA\_URL }}可以用来链接到home项目的 url?

即,如果 Django 在项目的根目录中运行,则模板中的变量(我们称之为 R){{ R }}将是/. 如果根 url 是子文件夹http://host/X/,则变量{{ R }}将是/X/(或http://host/X/)。

这似乎很简单,但我找不到答案。:) 谢谢!

4

4 回答 4

45

您可以为用于处理主页的 URL 配置命名并使用它:

网址.py:

from django.conf.urls.defaults import *

urlpatterns = patterns('myproject.views',
    url(r'^$', 'index', name='index'),
)

模板:

<a href="{% url index %}">...

更新:较新版本的 Django 需要在视图名称周围加上引号:

<a href="{% url 'index' %}">...

Django Book 中的这个注释有一些关于将应用程序部署到子目录的提示:

http://www.djangobook.com/en/1.0/chapter20/#cn43

于 2008-10-22T16:19:44.567 回答
13

我总是使用类似的东西<a href="/">(当然,假设你的家在根部)。我似乎记得曾经查找过这个,但找不到该路径的 Django 变量;无论如何,无论如何,/似乎很容易。

于 2008-10-22T16:17:46.040 回答
4

在您的管理员中,转到“站点”并设置域。

传递context_instance=RequestContext(request)给有问题的模板。

现在{{ SITE_URL }}在任何这些模板中使用,你就很成功了。

Django Book 的第 10 章提供的信息比您需要重新了解上下文处理器位更多。

于 2008-10-22T17:33:42.937 回答
2
(r'^$', 'django.views.generic.simple.redirect_to', {'url': '/home/'}),

工作正常 :)

于 2010-07-30T18:56:56.313 回答