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)
我想从我的 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)