Django中链接到页面的最佳方法

16 投票
6 回答
87402 浏览
提问于 2025-04-18 01:52

我成功地为我的索引创建了一个网址标签。但现在我有点困惑,怎么才能添加链接到其他页面呢。

我把这个放在我的 urls.py 文件里。

url(r'^$', 'index', name='index'),

接下来,我把这个标签放进了 href 里:

{% url 'index' %}

但是如果我想创建一个新页面,并且想链接到这个新页面,我该怎么做才是最好的呢?

6 个回答

0

例子:

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

现在,在你的 views.index 渲染的 HTML 模板中,你可以有:

<a href ="{% url 'about' %}">about</a>
2

使用下面的语法:

<a href="{% url 'cart' %}" > Cart page </a>

这里的 'cart' 是你应用程序网址模式中的一个名称字段。

urlpatterns = [
    #Leave as empty string for base url
    path('', views.shop, name="store"),
    path('cart/', views.cart, name="cart"),--------------------->
    path('checkout/', views.checkout, name="checkout"),
    path('shop/',views.shop, name="shop"),

]
4

只需要使用相同的标签 {% url 'index' %} 就可以了。你可以在urls.py文件中使用每个name来链接到对应的地址。

urls.py

url(r'^archive/$', 'mysite.views.archive',name='archive'),
url(r'^about/$', 'mysite.views.about',name='about'),
url(r'^contact/$', 'mysite.views.contact',name='contact'),

模板

<a href="{% url 'about' %}">About</a>
<a href="{% url 'contact' %}">Contact</a>

如果你有很多应用,可以使用namespace来管理它们。你可以查看这个链接了解更多信息:https://docs.djangoproject.com/en/dev/topics/http/urls/#url-namespaces-and-included-urlconfs

33

Django 更新了网址模式(urlpatterns),现在用 'path' 来代替之前的 'url',这样效率更高了。你不需要再使用复杂的正则表达式了。

from django.urls import path
from . import views

urlpatterns=[
    path('', views.index , name='index'),
    path('blog/', views.blog , name='blog'),]

然后在模板中,你可以使用模板标签。

<a href="{% url 'index' %}">Index</a>
<a href="{% url 'blog' %}">Blog</a>

如果你有多个应用程序,可以这样标记。例如,如果这是在 'post' 应用下:

在 post 应用的 urls.py 文件中:

from django.urls import path
from . import views

app_name = 'post'
urlpatterns=[
    path('', views.index , name='index'),
    path('blog/', views.blog , name='blog'),]

在项目的 urls.py 文件中:

from django.urls import path, include

urlpatterns=[
path('post/', include('post.urls'),]

在模板中,你可以这样做:

<a href="{% url 'post:index' %}">Index</a>
<a href="{% url 'post:blog' %}">Blog</a>
32

接下来,你需要把你的 urls.py 文件扩展成下面这个样子:

url(r'^$', 'index', name='index'),
url(r'^blog$', 'blog', name='blog'),

然后在你的 HTML 文件中,你可以使用其中任意一个:

<a href="{% url 'index' %}">Home</a>
<a href="{% url 'blog' %}">Blog</a>

当然,你可以在任何模板中根据需要多次使用模板标签 {% url 'index' %}

撰写回答