NoReverseMatch:使用来自模板的查询重定向到 Django 中的新页面

NoReverseMatch: Redirect to a new page in Django with a query from a template

我想从我的 HTML 模板内部重定向到一个新页面,并将查询作为 GET 请求查询传递给该页面。

HTML 代码如下所示。

<th scope="row">{{ forloop.counter }}</th>
<td>{{ project.article_title }}</td>
<td>{{ project.target_language }}</td>
<td> <a href="{% url 'translation/{{project.id}}/' %}" class="btn btn-success">View Project</a></td>

这没有重定向,我收到以下错误。

NoReverseMatch at /manager/
Reverse for 'translation/{{project.id}}/' not found. 'translation/{{project.id}}/' is not a valid view function or pattern name.

我的 URL 模式看起来像这样

urlpatterns = [
    path('', views.project_input_view, name='main'),
    path('login/', views.login_user, name='login'),
    # path('register/', views.register_user, name='register'),
    path('translation/<str:pk>/', views.translation_view, name='translation'),
    path('manager/', views.manager_view, name='manager_dashboard'),
    path('annotator/', views.annot_dashboard_view, name='annot_dashboard'),
]

但是,如果我编写以下内容,它就可以工作了。

<th scope="row">{{ forloop.counter }}</th>
<td>{{ project.article_title }}</td>
<td>{{ project.target_language }}</td>
<td> <a href="{% url 'main' %}" class="btn btn-success">View Project</a></td>

但我想连同查询一起重定向到 translation 页面。我怎样才能做到这一点?

如果您要从列表 class-based 视图重定向到详细信息 class-based 视图,这应该有效:

{% url 'translation' project.id %}

function-based 次观看的示例:

urls.py:

from .views import detail_view

urlpatterns = [
    path('<id>', detail_view ),
]

views.py:

from django.shortcuts import render


# relative import of forms

from .models import GeeksModel
# pass id attribute from urls

def detail_view(request, id):
    # dictionary for initial data with
    # field names as keys
    context ={}

    # add the dictionary during initialization
    context["data"] = GeeksModel.objects.get(id = id)
     
    return render(request, "detail_view.html", context)