带有变量django模板的动态URL

nob*_*be4 5 python django django-urls django-views

我正在尝试根据页面列表构建动态的URL列表.

在我的urls.py中,整个应用程序位于命名空间后面base:

urlpatterns = patterns('',
    url(r'^(?P<pk>[\w]+)/title/$', TitleSection.as_view(), name='title'),
    url(r'^(?P<pk>[\w]+)/amount/$', AmountSection.as_view(), name='amount'),
    url(r'^(?P<pk>[\w]+)/description/$', DescriptionSection.as_view(), name='description'), )
Run Code Online (Sandbox Code Playgroud)

在我的context数据中,我有以下列表:

sections: ['title', 'amount', 'description']
Run Code Online (Sandbox Code Playgroud)

我正在尝试为部分中的每个元素构建URL.

我尝试了以下方法:

{% for section in sections %}
    <a href="{% url "base:"+section pk=object.id %}">..</a>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

无法解析余数:'+ base'来自''base:"+ section'

然后我尝试了:

<a href="{% url "base:{{section}}" pk=project.id %}">{{ section }}</a>
Run Code Online (Sandbox Code Playgroud)

错误:

使用参数'()'和关键字参数'{u'pk':77}'找不到'{{section}}'的反转.尝试过0种模式:[]

你知道怎么做吗?

Ala*_*air 11

您可以使用添加模板过滤器:

{% url "base:"|add:section pk=project.id %}
Run Code Online (Sandbox Code Playgroud)


小智 5

对于我的情况也有效

{% for section in sections %}
<a href="{% url "base" pk=object.id %}">..</a>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

其中 url 模式是

url=[
path('base/<pk>/',base,name='base'),
]
Run Code Online (Sandbox Code Playgroud)