Как я могу правильно передать kwargs в RedirectView из входа в Django для перенаправления в профиль пользователя? - PullRequest
0 голосов
/ 13 мая 2018

У меня проблема с входом пользователя в систему и последующим перенаправлением на правильный профиль. У каждого пользователя есть свой профиль. Каждый профиль имеет панель управления. Используя встроенный логин django, я хочу перенаправить недавно аутентифицированного пользователя на URL-адрес, например: example.com/profile/dashboard/.

Я не могу заставить это работать, потому что не могу понять, как передать kwargs между представлением входа в систему django и моим подробным представлением. Между ними есть редирект. Может кто-нибудь показать мне, как это сделать?

models.py

class Profile(TimeStamped, Slugged):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.user.username

    def save(self, *args, **kwargs):
        super(Profile, self).save(*args, **kwargs)
        self.slug = (slugify(self.user.username))

    def get_absolute_url(self):
        return reverse('profiles:detail', kwargs={'profile': self.slug})


class Dashboard(TimeStamped, Slugged):
    profile = models.OneToOneField(Profile, on_delete = models.CASCADE)
    uuid = models.UUIDField(default=uuid.uuid4)

    def __str__(self):
        return self.profile.user.username

    def save(self, *args, **kwargs):
        super(Dashboard, self).save(*args, **kwargs)
        self.slug = (slugify(self.uuid))

    def get_absolute_url(self):
        return reverse('profiles:dashboard', kwargs={'profile': self.profile.slug,
                                                        'dashboard': self.slug})

views.py

class DashboardRedirectView(LoginRequiredMixin, RedirectView):

    permanent = False
    query_string = False
    pattern_name = 'profiles:dashboard'

    def get_redirect_url(self, *args, **kwargs):
        dashboard = get_object_or_404(Dashboard, slug=kwargs['dashboard'])
        return super().get_redirect_url(*args, **kwargs)

urls.py

urlpatterns = [
    path('profiles/home/', 
            DashboardRedirectView.as_view(), 
            name = 'home')
.........
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...