Джанго перенаправление URL в форме действий - PullRequest
1 голос
/ 18 мая 2019

Я пробовал много разных вещей, но я не могу заставить свое действие перенаправить, как только моя форма сохранится.

Мои loan_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')
]

1 Ответ

1 голос
/ 18 мая 2019

Если LoanListView - это ListView, а LoanCreateView - это CreateView, вы должны публиковать в LoanCreateView, так как это представление будет анализировать форму и выполнять правильные действия, поэтому выследует написать:

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

В LoanCreateView вы можете указать, к какому представлению вы хотите перенаправить сообщение в случае успешной обработки, указав атрибут success_url.Если вы хотите указать имя представления, обычно вам может помочь reverse_lazy [Django-doc] :

from django.urls import <b>reverse_lazy</b>
from django.views.generic.edit import CreateView

class LoanCreateView(CreateView):
    # ...
    success_url = <b>reverse_lazy('loans')</b>
...