首页 > 解决方案 > 表单操作中的 Django url 重定向

问题描述

我尝试了很多不同的东西,但是一旦我的表单保存,我就无法让我的动作重定向。

我的loans_form.html:

<form action="{% url loans %}" method="post">
    {% csrf_token %}
    {% for field in form %}
        <div class="fieldWrapper">
            {{ field.errors }}
            {{ field.label_tag }}: {{ field }}
        </div>

    {% endfor %}
    <p><input type="submit" value="Submit loan request" /></p>
</form>

还有我的 urls.py

from django.urls import path

from .views import LoanListView, LoanCreateView

urlpatterns =[
    path('', LoanListView.as_view(), name='loans'),
    path('create', LoanCreateView.as_view(), name='create')
]

标签: djangodjango-urls

解决方案


给定LoanListViewis aListViewLoanCreateViewis a CreateView,您应该发布到LoanCreateView,因为这是将解析表单并做出正确操作的视图,因此您应该编写:

<form action="{% url 'create' %}" method="post">
   ...
</form>

在 中,您可以通过指定属性LoanCreateView来指定在处理成功的情况下要重定向到哪个视图。success_url如果您想指定视图的名称,那么通常reverse_lazy[Django-doc]可以帮助您:

from django.urls import reverse_lazy
from django.views.generic.edit import CreateView

class LoanCreateView(CreateView):
    # ...
    success_url = reverse_lazy('loans')

推荐阅读