LoginRequiredMixin с redirect_field_name без перенаправления - PullRequest
0 голосов
/ 14 июня 2019

При использовании LoginRequiredMixin он не направляется к указанному мною 'redirect_field_name'. Даже при том, что я вижу это в URL.

Я попытался поместить оба URL-адреса ('user / update /') и названные URL-адреса ('accounts: profile-update') в 'redirect_field_name' с помощью 'LoginRequiredMixin', но ни один из них, похоже, не помог перенаправлению.

Я могу получить перенаправление на работу, когда я использую ниже, в src / settings.py LOGIN_REDIRECT_URL = '/user/'

Но я хочу иметь пользовательские перенаправления для разных представлений.

class ProfileUpdateView(LoginRequiredMixin, UpdateView):
    # http://127.0.0.1:8000/user/update/
    login_url = '/login/'
    redirect_field_name = 'accounts:profile-update'
    # redirect_field_name = '/user/update/'
    # neither works above
    model = Profile
    fields = ['first_name', 'last_name', 'mobile_phone',]
    template_name = 'accounts/profile_update.html'
    success_url = reverse_lazy('accounts:my-profile-detail')

    # PK required in UpdateView, making context['object']
    def get_object(self, queryset=None):
        if self.request.user.is_authenticated:
            queryset = Profile.objects.get(user=self.request.user)
        return queryset

# accounts/urls.py
app_name = 'accounts'
urlpatterns = [
    # ... some more urls ...
    path('update/', ProfileUpdateView.as_view(), name='profile-update'),
]

# src/urls.py
urlpatterns = [
    path('', include('django.contrib.auth.urls')),
    path('admin/', admin.site.urls),
    path('user/', include('accounts.urls')),
]

# src/settings.py
# LOGIN_REDIRECT_URL = '/user/'
# If I uncomment this, it works, but all my login's redirect only to this URL if I use LoginRequiredMixin :(```

1 Ответ

1 голос
/ 14 июня 2019

Вы неправильно поняли, что делает redirect_field_name.

redirect_field_name контролирует имя поля , а не URL, на который вы перенаправляете. Например, установка redirect_field_name = 'nextpage' означает, что LoginRequiredMixin будет перенаправлять на /login/?nextpage=/user/update/ вместо /login/?next=/user/update/.

Обычно вы не хотите переопределять redirect_field_name. Проще придерживаться значения по умолчанию next.

LoginRequiredMixin должен автоматически перенаправить на предыдущую страницу после входа в систему. Если это не после вы удалили redirect_field_name и попытались снова, то проблема может быть в вашем представлении входа или шаблон.

...