Получение операционной системы пользователя в Django & Docker

Операционная система всегда установлена на Ubuntu даже на моем localhost. Я не знаю, связано ли это с Docker или чем-то еще, но вот мой код.

У меня есть утилита для получения операционной системы пользователя (я использую httpagentparser)

def get_operating_system(request):
    agent = request.META.get("HTTP_USER_AGENT")
    operating_system = httpagentparser.detect(agent).get("os").get("name")
    return operating_system

и вызываю эту функцию в моем представлении auth (sign up).

class SignUp(FormView):
    form_class = SignUpForm
    template_name = "project1/registration/signup.html"


    def form_valid(self, form):
        user = form.save(commit=False)
        user.username = form.cleaned_data.get("username")
        user.operating_system = get_operating_system(self.request)

        user.save()
        send_email_confirmation(user, user.email)
        notifications.info(
            self.request,
            _(
                "some text here"
            ),
        )
        return redirect("login")

и вот моя модель пользователя

...
    operating_system = models.CharField(_("operating system of the user"),max_length=150, default=OperatingSystem.WINDOWS)
...
class User(AbstractUser):
    class OperatingSystem(models.TextChoices):
        UBUNTU = "UBUNTU",_("ubuntu")
        DEBIAN = "DEBIAN",_("debian")
        FEDORA = "FEDORA",_("fedora")
        MINT = "MINT",_("linux mint")
        WINDOWS = "WINDOWS",_("windows")
        MACOS = "MACOS",_("macos")
...

Я запускаю свой проект в Docker на сервере Ubuntu, и когда я регистрируюсь на своем сайте, моей операционной системой всегда является Ubuntu, даже если я использую различные операционные системы, такие как Windows и MacOS.

В докер-контейнерах используется Alpine Linux, если это может быть полезно.

Вернуться на верх