Перенаправляется на ту же страницу после метода POST django - PullRequest
0 голосов
/ 16 марта 2020

Я создаю этот проект в django. Я работаю над отчетом о фильмах, где я go в подробном просмотре фильма, затем нажимаю кнопку отчета. Форма report_form показывает, где я обосновываю, почему я сообщаю, и затем я нажимаю отчет. Все отлично работает, но есть одна вещь. После репортажа меня возвращают в случайный (?) Подробный просмотр фильма, но я бы хотел go вернуться к просмотру фильма, о котором я пишу. Но как ???

views.py

class FilmReportView(LoginRequiredMixin, CreateView):
    model = Report
    fields = ['reason']

    def form_valid(self, form):
        form.instance.reporter = self.request.user
        form.instance.reports_id = self.kwargs['pk']
        return super().form_valid(form)

    def get_success_url(self):
        return "film/<int:pk>/report"

report_form. html

{% extends "board/base.html" %}
{% load crispy_forms_tags %}
{% load materializecss %}
{% block content %}
<div class="valign-wrapper row login-box">
    <div class="col card hoverable s10 pull-s1 m6 pull-m3 l8 pull-l2">
        <form method="POST" action="" enctype="multipart/form-data">
            {% csrf_token %}
            <div class="card-content">
                <span class="card-title">Jusity why you want to report this film?</span>
                <div class="row">
                    {{ form|materializecss }}
                </div>
            </div>
            <div class="card-action right-align">
                <input type="reset" id="reset" class="btn-flat grey-text waves-effect">
                <input type="submit" class="btn green waves-effect waves-light" value="Report">
            </div>
        </form>
    </div>
</div>
{% endblock content %}

urls.py

urlpatterns = [
    path("", views.films_view, name="board-home"),
    path("film/add", FilmAddView.as_view(), name="film-add"),
    path("film/<int:pk>/", FilmDetailView.as_view(), name="film-detail"),
    path("film/<int:pk>/report", FilmReportView.as_view(), name="film-report"),
]

models.py

class Report(models.Model):
    reason = models.TextField()
    reporter = models.ForeignKey(User, on_delete=models.CASCADE, related_name="Reporter")
    reports = models.ForeignKey(Film, on_delete=models.CASCADE)

    def __str__(self):  # pragma: no cover
        return f"{self.reports.title} reported by {self.reporter.username}"

    def get_absolute_url(self):  # pragma: no cover
        return reverse("film-detail", kwargs={"pk": self.pk})

Ответы [ 2 ]

1 голос
/ 16 марта 2020

Исправьте свой FilmReportView get_success_url(), чтобы он выглядел так:

def get_success_url(self):
        return reverse("film-detail", kwargs={"pk": self.object.reports.id})

Это должно позаботиться об этом

0 голосов
/ 16 марта 2020

В вашем views.py или даже в шаблоне вы можете поместить параметр next с нужным вам URL:

form/action/url?next={{request.path}}

Подробнее о следующем: https://www.reddit.com/r/django/comments/32s9ag/how_do_i_set_the_next_context_variable_in_django/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...