Python 如何在django中重定向到动态url

Python 如何在django中重定向到动态url,python,django,redirect,django-models,dynamic-url,Python,Django,Redirect,Django Models,Dynamic Url,我正在做一个django项目。在这个项目中,我有一个动态url,如下所示 app_name = 'test' urlpatterns = [ path('root', views.root, name='root'), path('output/<str:instance>', views.output_page, name='output_page'), ] http://127.0.0.1:8000/output/test-001 这是模型 class Ob

我正在做一个django项目。在这个项目中,我有一个动态url,如下所示

app_name = 'test'

urlpatterns = [
    path('root', views.root, name='root'),
    path('output/<str:instance>', views.output_page, name='output_page'),
]
http://127.0.0.1:8000/output/test-001
这是模型

class Object(models.Model):
    Name = models.CharField(max_length=200, null=True, blank=True)
    Job = models.CharField(max_length=200, default="")
    Instance_id = models.CharField(max_length=200)
当重定向发生时,我希望url如下

app_name = 'test'

urlpatterns = [
    path('root', views.root, name='root'),
    path('output/<str:instance>', views.output_page, name='output_page'),
]
http://127.0.0.1:8000/output/test-001
其中,
test-001
是模型中的实例id

“输出”页面应过滤具有实例id的模型中的所有数据 您的问题的直接解决方案如下:

from django.urls import reverse
from django.shortcuts import get_object_or_404
...
instance = get_object_or_404(Object, name=name, job=job)
redirect(reverse('test:output_page', args=instance))
然而,值得研究基于类的视图。为此,我建议使用django的内置
RedirectView

工具书类 Django反面:

Django重定向视图:

解决方案 您的问题的直接解决方案如下:

from django.urls import reverse
from django.shortcuts import get_object_or_404
...
instance = get_object_or_404(Object, name=name, job=job)
redirect(reverse('test:output_page', args=instance))
然而,值得研究基于类的视图。为此,我建议使用django的内置
RedirectView

工具书类 Django反面:

Django重定向视图:

您可以这样做

返回重定向(反向(“test:output\u page”,kwargs={'instance':str(instance\u id)}))
您可以这样做



返回重定向(反向(“测试:输出页面”,kwargs={'instance':str(instance\u id)}))

感谢您的回复。我现在得到一个错误
output_page(),缺少1个必需的位置参数:“instance”
您可以将args和kwargs传递给reverse函数。我已经更新了我的答案以反映这一点,但参考文档中也提到了这一点。我现在得到了“output\u page”的反向错误
,没有找到任何参数。尝试了1个模式:[“输出/(?P[^/]+)$”]
您需要确保实例存在,并在重定向之前传入。Hi。我解决了这个错误。我在模板中引用了该页面。一旦我删除了它,错误就解决了。非常感谢汉克斯的答复。我现在得到一个错误
output_page(),缺少1个必需的位置参数:“instance”
您可以将args和kwargs传递给reverse函数。我已经更新了我的答案以反映这一点,但参考文档中也提到了这一点。我现在得到了“output\u page”的反向错误
,没有找到任何参数。尝试了1个模式:[“输出/(?P[^/]+)$”]
您需要确保实例存在,并在重定向之前传入。Hi。我解决了这个错误。我在模板中引用了该页面。一旦我删除了它,错误就解决了。非常感谢。我现在得到了“output\u page”的反向错误
,没有找到任何参数。尝试了1个模式:['output/(?P[^/]+)$']
实例
在URL中以字符串形式给出,因此您需要在
kwargs
中发送
str(实例id)
。我解决了这个错误。我在模板中引用了该页面。一旦我删除了它,错误就解决了。非常感谢。我现在得到了“output\u page”的反向错误
,没有找到任何参数。尝试了1个模式:['output/(?P[^/]+)$']
实例
在URL中以字符串形式给出,因此您需要在
kwargs
中发送
str(实例id)
。我解决了这个错误。我在模板中引用了该页面。一旦我删除了它,错误就解决了。谢谢,这能回答你的问题吗?这回答了你的问题吗?