创建django后如何返回到后面的页面?

创建django后如何返回到后面的页面?,django,Django,创建moneylog后,我想回到moneybook_详细信息,因此我制作了一个moneylog/View.py: class moneylog_create(FormView): form_class = forms.CreateMoneylogForm template_name = "moneylogs/create.html" def form_valid(self, form): moneylog = form.save() m

创建moneylog后,我想回到moneybook_详细信息,因此我制作了一个moneylog/View.py

class moneylog_create(FormView):

    form_class = forms.CreateMoneylogForm
    template_name = "moneylogs/create.html"

    def form_valid(self, form):
        moneylog = form.save()
        moneybook = moneybook_models.Moneybook.objects.get(
            pk=self.kwargs["pk"])
        form.instance.moneybook = moneybook
        moneylog.save()
        form.save_m2m()
        return redirect(reverse("moneybook:detail", kwargs={'pk': self.kwargs["pk"]}))
这是Moneybook/url.py

app_name = "moneybooks"

urlpatterns = [
    path("create/", views.moneybook_create.as_view(), name="create"),
    path("update/<int:pk>/",
         views.moneybook_update.as_view(), name="update"),
    path("<int:pk>/", views.moneybook_detail, name="detail")
]
app_name=“moneybooks”
URL模式=[
路径(“create/”,views.moneybook\u create.as\u view(),name=“create”),
路径(“更新/”,
views.moneybook\u update.as\u view(),name=“update”),
路径(“/”,views.moneybook_detail,name=“detail”)
]

如何在创建moneylog后返回moneybook\u详细信息?

当您使用模型表单而不是FormView时,请使用创建视图并更正您的返回,如图所示

 class moneylog_create(CreateView):
    form_class = forms.CreateMoneylogForm
    template_name = "moneylogs/create.html"

def form_valid(self, form):
    moneylog = form.save()
    moneybook = moneybook_models.Moneybook.objects.get(
        pk=self.kwargs["pk"])
    form.instance.moneybook = moneybook
    moneylog.save()
    form.save_m2m()
    return reverse("moneybooks:detail", kwargs={'pk': self.kwargs["pk"]})
并在url中使用非重叠模式

path("moneybook/<int:pk>/", views.moneybook_detail, name="detail")
path(“moneybook/”,views.moneybook\u detail,name=“detail”)
您的创建视图是
moneylog\u create
,如您在url中提到的
moneybook\u create
类moneylog\u create(FormView):
class moneylog_create(FormView):

    form_class = forms.CreateMoneylogForm
    template_name = "moneylogs/create.html"

    def form_valid(self, form):
        moneylog = form.save()
        moneybook = moneybook_models.Moneybook.objects.get(
            pk=self.kwargs["pk"])
        form.instance.moneybook = moneybook
        moneylog.save()
        form.save_m2m()
        return redirect(reverse("moneybooks:detail", kwargs={'pk': self.kwargs["pk"]}))


app_name = "moneybooks"

urlpatterns = [
    path("create/", views.moneybook_create.as_view(), name="create"),
    path("update/<int:pk>/",
         views.moneybook_update.as_view(), name="update"),
    path("detail/<int:pk>/", views.moneybook_detail, name="detail")
]
form_class=forms.CreateMoneylogForm template_name=“moneylogs/create.html” def表单_有效(自身、表单): moneylog=form.save() moneybook=moneybook\u models.moneybook.objects.get( pk=self.kwargs[“pk”]) form.instance.moneybook=moneybook moneylog.save() 表单.保存_m2m() 返回重定向(反向(“moneybooks:detail”,kwargs={'pk':self.kwargs[“pk”]})) app_name=“账本” URL模式=[ 路径(“create/”,views.moneybook\u create.as\u view(),name=“create”), 路径(“更新/”, views.moneybook\u update.as\u view(),name=“update”), 路径(“detail/”,views.moneybook_detail,name=“detail”) ]
replace moneybook to moneybooks:return redirect(反向(“moneybooks:detail”,kwargs={'pk':self.kwargs[“pk”]}))您遇到了什么错误。@SaisivaA没有错误,但它不会返回backpage(moneybook detail),谢谢您的回复,但它不起作用。。我不知道url中的非重叠模式是什么。您会遇到什么错误,可以发布跟踪回溯吗?无错误,“post/moneylogs/create/1/HTTP/1.1”200 5132“是日志消息,但没有页面重定向。您只需删除重定向,但在我像您一样编辑代码时没有任何更改。请尝试使用更特定于目的的FormView,而不是FormView。谢谢您的回复,但它不起作用。”。。我不知道您更改为detail/moneybooks:detail的意图是什么:-moneybooks应该是应用程序的名称,url构造moneybooks/detail/5/或者您可以使用moneybooks/5/并尝试执行相反的操作(“moneybooks:detail”,kwargs={'pk':self.kwargs[“pk”})虽然我在回复你的评论之前还没听懂,但我还是照你说的做了,结果没用。不过,谢谢你的评论。我明白你说的。。但无论如何,它都不起作用