Как перенаправить пользователя на страницу детального просмотра после отправки формы в Django - PullRequest
0 голосов
/ 10 июля 2020

У меня есть модель:

class Site(models.Model):
    url = models.URLField(max_length=250, unique=True)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.url

    class Meta:
        ordering = ('url',)

У меня есть страница с описанием модели. URL следующий: http://127.0.0.1:8000/sites/10/ Теперь мне нужно создать форму. Куда пользователь добавит новый сайт. И после добавления нового сайта я хочу перенаправить его на URL-адрес этой подробной страницы с его идентификатором сайта.

Вот путь urls.py:

from django.urls import path
from django.http import HttpResponse
from .views import RobotView, SiteView, add_site

app_name = 'checks'

urlpatterns = [
    path('robots/<int:pk>/', RobotView.as_view(), name='robots'),
    path('sites/<int:pk>/', SiteView.as_view(), name='sites'),
    path('add/', add_site, name='add_site'),
]

и вот представление :

def add_site(request):
    if request.method == 'POST':
        form = AddSiteForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('checks:sites', url.pk)
    else:
        form = AddSiteForm()
    return render(request, 'home.html', { 'form': form })

Но это не работает. Может ли кто-нибудь помочь мне с этой проблемой?

1 Ответ

0 голосов
/ 10 июля 2020
path('robots/<int:pk>/', RobotView.as_view(), name='robots')

По имени можно вернуть redirect ()

from django.shortcuts import redirect
 //pk must be the same variable as define in path(/<int:**pk**>)
 def anyFunction_in_Views.py(request,pk):
    AnyModel.objects.filter(primarykey==pk)
    return render()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...