django使用模板中链接参数的值

时间:2018-04-16 16:19:48

标签: django django-templates django-views

我需要在模板内的链接中使用参数 例如,如果我的网址链接是

http://127.0.0.1:8000/app1/factory/toyota/

urls.py中urlpatterns中此链接的url为:

在我的模板中使用上面提到的相同链接我尝试过:

1 -

{% if 'factory' in request.GET %} <h1>my {{request.GET.factory}}</h1> {% endif%}

并尝试了

2 -

{% if request.GET.factory %}
<h1> {{request.GET.factory}}</h1>
{% endif%}

并尝试了

3 -

 {{request.GET.factory}} 

4- a)我在viewsview中添加了这个函数在views.py

def get_context_data(self, **kwargs):
    context = super(WorkerListView, self).get_context_data(**kwargs) 
    context['factory'] = self.request.GET.get('factory')
    return context

b)在模板中插入了这一行:

<h1>my factory is {{factory}}</h1>

,结果是

my factory is None 

为什么它不返回?虽然我可以看到工厂在链接中有一个值??

在前3次试验中,我的页面中没有任何内容 在第四个它返回无。 我期待在我的页面中返回丰田的价值?

.....任何想法 - 我做错了什么?感谢

2 个答案:

答案 0 :(得分:1)

你的正则表达式路径:

 path('factory/<slug:factory>/',views.WorkertListView.as_view(),name=worker_list'),

您需要以这种方式调用您的网址:http://127.0.0.1:8000/app1/factory/toyota

无需扩展,它会起作用

答案 1 :(得分:1)

只需将request.GET替换为listview中的views.py中的kwargs

def get_context_data(self, **kwargs):
    context = super(WorkerListView, self).get_context_data(**kwargs) 
    context['factory'] = self.kwargs.get('factory')
    return context

然后在模板中使用工厂,如:

<h1>factory is {{factory}}</h1>