我想为我的网站设计一个返回主页按钮,以及如何在模板中获取我的网站的根路径,以便我可以执行以下操作:
<a href="{{ root_url }}">Go back home</a>
或者我应该首先找出视图中的路径,然后将其传递给模板以通过某些上下文进行渲染。谢谢。
我认为这里的正确方法是使用{% url %}
标签,并且我假设您的 url conf 中有一个根 url。
网址.py
url(r'^mah_root/$', 'someapp.views.mah_view', name='mah_view'),
然后在您的模板中:
<a href="{% url mah_view %}">Go back home</a>
您应该能够访问请求的get_host()方法:
<a href="http://{{ request.get_host() }}">Go back home</a>
虽然你也可以这样做:
<a href="/">Go back home</a>
我发现了一个技巧,使用这个标签:
{{ HTTP_HOST }}
你可以这样做:
<a href="{{ HTTP_HOST }}"> back home <a>
或者
<a href="{{ HTTP_HOST }}/what_you_want"> back home <a>
这就是我所做的:
在 urls.py 中:
from django.contrib import admin
from django.urls import include, path
from django.views.generic import TemplateView
urlpatterns = [
path('blog/', include('blog.urls')),
path('admin/', admin.site.urls),
path('', TemplateView.as_view(template_name='landing.html'), name='landing')
]
然后,无论从哪个角度看:
<a href="{% url 'landing' %}">Site Title</a>
当您单击链接时,这将解析为 localhost:8000/ 或 site.domain.com/ 无论您使用的是哪个
参考标准 Django 示例:
urlpatterns = [
path('', views.index, name='index'),
]
然后模板代码:
href="{% url 'index' %}"
也将工作。