如何在Django模板中添加链接

3

我很新手Django,有些困惑。 我已经在HTML模板文件中放置了一个链接; 点击链接会报告404错误。

应用程序views.py文件:

from django.shortcuts import render        

def index(request):
    return render(request, "login/index.html", None)

def terms(request):
    return render(request, "login/terms.html", None)

App urls.py:

from django.urls import path   
from . import views

urlpatterns = [
    path('', views.index, name="index"),
    path('', views.terms, name="terms")
]

index.html中的有问题的代码:

By signing in, you agree to our <a href="/login/terms.html">Terms Of Use Policy</a>

点击链接会弹出404错误。非常感谢任何帮助,我正在学习一个新框架。


<a href={% url 'terms' %}>使用条款政策</a>,并适当配置urlpatterns。Django文档中关于此的说明https://docs.djangoproject.com/en/2.2/topics/http/urls/#examples - Nikita Tonkoskur
通过上述路径,你永远无法到达terms - Willem Van Onsem
2个回答

5

首先,问题在于 views.indexviews.terms 的路径相同。因此,您已经使得 views.terms 无法访问。

因此,您应该更改其中一个路径,例如:

from django.urls import path   
from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path(<b>'terms/'</b>, views.terms, name='terms')
]

你最好使用 {% url ... %} 模板标签 [Django-doc] 来解析URL,因为如果你以后决定更改某个视图的路径,仍然可以计算路径。
所以在模板中,你可以这样写:
By signing in, you agree to our <a href="{% url 'terms' %}">Terms Of Use Policy</a>

谢谢您为我澄清这个问题。完美地解决了。 - Elcid_91

1
urlpatterns = [
    path('', views.index, name="index"),
    path('terms/', views.terms, name="terms")
]
By signing in, you agree to our <a href="{% url 'terms' %}">Terms Of Use Policy</a>
or

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接