在url模板标记中传递Django模板变量

在url模板标记中传递Django模板变量,django,django-templates,django-urls,Django,Django Templates,Django Urls,我对Django还是有点陌生,一直在努力想办法将模板变量添加到Django url模板标记中 我可以用一个例子更好地解释 我有一个帮助中心/知识库,目前有文章以及与该文章相关联的标签。目标是允许用户单击那些关联的标记,使用单击的标记在帮助中心上执行搜索,并在搜索中返回一组新的文章 这是我的url模式: urlpatterns = [ ... path('search/', views.search, name='search'), ... <div id="tags uk-ma

我对Django还是有点陌生,一直在努力想办法将模板变量添加到Django url模板标记中

我可以用一个例子更好地解释

我有一个帮助中心/知识库,目前有文章以及与该文章相关联的标签。目标是允许用户单击那些关联的标记,使用单击的标记在帮助中心上执行搜索,并在搜索中返回一组新的文章

这是我的url模式:

urlpatterns = [
...
path('search/', views.search, name='search'),
...
<div id="tags uk-margin-bottom">
    {% for tag in article.tags.all %}
        <a href="{% url 'search' %}" class="badge badge-pill badge-primary">#{{ tag }}</a>
    {% endfor %}
</div>
def search(request):
if request.user.is_authenticated:        
    # get all articles
    queryset_list = Article.objects.all()

    if 'search' in request.GET:
        search = request.GET['search']

        if search:

            tags = []
            queryset_list_tags = queryset_list.filter(tags__name__icontains=search).distinct()

            try:
                queryset_list_title = queryset_list.filter(title__icontains=search).distinct()
            except:
                print("Testing - Couldn't grab titles.")

            search_results = queryset_list_tags | queryset_list_title

            # get all tags from query_list_title search
            for title in queryset_list_title:
                article = Article.objects.get(title=title)
                queryset_tags = article.tags.all().values_list('name')
         
                for tag in queryset_tags:
                    # add all tags in queryset to tags list
                    tags.append(tag[0])

            # get all tags from query_list_tags search
            for title in queryset_list_tags:
                z_article = Article.objects.get(title=title)
                z_queryset_tags = z_article.tags.all().values_list('name')
                
            
                for tag in z_queryset_tags:
                    # add all tags in queryset to tags list
                    tags.append(tag[0])

            # remove duplicate tags
            tags = list(dict.fromkeys(tags))
            print(f"tags: {tags}")

    context = {
        'articles': search_results,
        'tags': tags
    }

    return render(request, 'articles/search.html', context)
else:
    return redirect('/')
]

我的html:

urlpatterns = [
...
path('search/', views.search, name='search'),
...
<div id="tags uk-margin-bottom">
    {% for tag in article.tags.all %}
        <a href="{% url 'search' %}" class="badge badge-pill badge-primary">#{{ tag }}</a>
    {% endfor %}
</div>
def search(request):
if request.user.is_authenticated:        
    # get all articles
    queryset_list = Article.objects.all()

    if 'search' in request.GET:
        search = request.GET['search']

        if search:

            tags = []
            queryset_list_tags = queryset_list.filter(tags__name__icontains=search).distinct()

            try:
                queryset_list_title = queryset_list.filter(title__icontains=search).distinct()
            except:
                print("Testing - Couldn't grab titles.")

            search_results = queryset_list_tags | queryset_list_title

            # get all tags from query_list_title search
            for title in queryset_list_title:
                article = Article.objects.get(title=title)
                queryset_tags = article.tags.all().values_list('name')
         
                for tag in queryset_tags:
                    # add all tags in queryset to tags list
                    tags.append(tag[0])

            # get all tags from query_list_tags search
            for title in queryset_list_tags:
                z_article = Article.objects.get(title=title)
                z_queryset_tags = z_article.tags.all().values_list('name')
                
            
                for tag in z_queryset_tags:
                    # add all tags in queryset to tags list
                    tags.append(tag[0])

            # remove duplicate tags
            tags = list(dict.fromkeys(tags))
            print(f"tags: {tags}")

    context = {
        'articles': search_results,
        'tags': tags
    }

    return render(request, 'articles/search.html', context)
else:
    return redirect('/')
搜索功能可以工作,用户可以在数据库中搜索文章/标签。问题是,我需要在用户单击标记时调用搜索功能,以便URL看起来像
/articles/search/?search=thisistag

我曾尝试向url模式添加第二个参数,如:
path('search/',views.search,name='search'),
,但这最终会破坏其他地方的搜索功能,因为除了这一实例之外,其他地方都不需要第二个参数(除非我有误解)

我可以在html中执行此操作,但是我的搜索功能没有被调用:


希望这是有意义的-我仍在学习,所以非常感谢任何帮助或建议

类似的方法可能会奏效:

template.html:

<a href="{% url 'search' %}?search={{tag}}"> Go to </a>

真不敢相信我没试过。这成功了!你太棒了-非常感谢你D