如何在Django模板中使用href属性

28
当我尝试在我的Django模板中使用链接从/appname/index/跳转到/appname/detail/###时,我却跳转到了/appname/index/detail/###,这不是我想要的结果,所以我的应用在urlconf中找不到它。
首先是detail页面的urls.py行。
url(r'detail/(?P<jobID>\d+)/$', 'appname.views.detail')

此外,根URL配置

urlpatterns = patterns('', 
    url(r'^appname/', include('appname.urls')),
    url(r'^admin/', include(admin.site.urls)),
)

接下来,模板代码试图到达那里。

{% for job in jobList %}
    <a href="detail/{{ job.id }}/">{{ job.name }}</a>

我不确定还有什么其他相关信息,如果您想查看其他内容,请询问。 我也已经尝试了:

<a href="{% url 'appname.views.detail' %}/{{ job.id }}">{{ job.name }}</a>

但那也行不通。提前感谢您的任何帮助。


根URL配置是如何定义的?在“/detail…”之前添加URL前缀。 - karthikr
然后您需要使用/appname/detail/{{job_id}}/。请查看@Aamir的第二个答案。那应该可以工作。 - karthikr
5个回答

53

href 开头添加 /

<a href="/appname/detail/{{ job.id }}/">{{ job.name }}</a>

为了让 url 标签起作用,您需要这样做:

<a href="{% url 'appname.views.detail' jobID=job.id %}">{{ job.name }}</a>

这两种方法给我的目标URL与之前相同。 - avorum
你是如何在主urlconf文件中包含appname的URL? - Aamir Rind

2

根据我的经验,只要在 urls.py 中定义了页面的URL地址,并按照以下格式包含绝对路径,则 href 标签应该指向正确的地址。

Site name: yyyy.com
Url of page to redirect to in urls.py: yyyy.com/signup/

Sample link: <a href="/signup/">Signup</a>

您会注意到href标签中的内容被附加到当前url。为了创建更加动态的链接,您可以根据DTL指南使用一些Python代码。

1
假设您在

中。
myapp/detail

并且你想转到页面

 myapp/anything

你应该这样做。
<a href="../anything">Page</a>

1

关于 Django 模板
Url.py 文件

app_name = 'app_name'
path('url/', TestView.as_view(), name='the_url'),
path('url//<int:id>', TestView.as_view(), name='the_url'),

templates(html.py)

 <a href="{% url 'app_name:the_url'  %}">Test</a>
 <a href="{% url 'app_name:the_url' id %}">Test</a>

0

我遇到了同样的问题,新地址在“/”URL之后添加,无法识别。

可以通过在href属性中添加“/”来解决。

例如:href:services是错误的,应该使用href:/services来访问服务页面。


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