Получение операционной системы пользователя в 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, если это может быть полезно.