Django: Как перейти к URL с опцией выбора, используя GET и views.py вместо чистого подхода JavaScript

Я показываю два решения, одно с GET, другое с Javascript. В обоих случаях мне нужно дважды нажать кнопку "Назад", чтобы вернуться на предыдущую страницу. Я думаю, что это проблема Django.

GET case

В templates у меня есть следующая форма:

<form id="form-user" action="" method="GET">
<select id="user" data-slug="{{x.user}}" onChange=selectChange(this)>
    <option value="view">View</option>
</select>
</form>
<script>
function selectChange(select) {
    var selectID = select.id;
    var value = select.value;
    
    if ($('#'+selectID).data('slug')) {
        var my_slug = $('#'+selectID).data('slug');
        var my_url_creator = "{% url 'profiles:profile-detail' slug=none %}".replace(/none/, my_slug.toString());
    }
    
    if (value == 'view'){
        $("#form-"+selectID).attr("action", my_url_creator);
        $("#form-"+selectID).submit();
    }  
}

В views.py у меня есть:

 class ProfileView(DetailView):
    model = Profile

    def get_object(self, *args, **kwargs):
        myslug = self.kwargs.get('slug')
        user = User.objects.get(username=myslug)
        profile = Profile.objects.get(user=user)
        return profile

При таком подходе я попадаю на страницу профиля {{x.user}}=user1, однако, когда я нажимаю кнопку назад в браузере, он переходит от mypath/user1 к mypath/user1?. Мне не нравится этот ?. Чтобы вернуться на предыдущую страницу, мне нужно дважды нажать кнопку "Назад". Я хотел бы нажать ее только один раз и убрать этот ? шаг перехода.

Javascript case

views.py не изменяется, так как в нем нет необходимости. template очень похоже, мы просто удаляем method="GET" в теге HTML-формы, а в javascript меняем только следующее:

if (value == 'view'){
            window.location.href = my_url_creator;
        }  

Здесь также, мне удается перейти на страницу пользователя, однако, чтобы вернуться на предыдущую страницу, мне нужен двойной щелчок, в этом случае он переходит от mypath/user1 к mypath/user1 и затем к предыдущему случаю.

Я считаю, что это проблема django, но не уверен, что мы можем ее решить

РЕДАКТИРОВАНИЕ:

По предложению views.py лучше написать так:

def get_object(self, *args, **kwargs):
        slug = self.kwargs.get('slug')
        return get_object_or_404(Profile, user__username=slug)

Однако это не устраняет проблему.

А как насчет просто ссылки?

<a href="{% profiles:profile-detail slug=x.user %}">View</a>

С помощью CSS можно оформить ссылку как кнопку или что-то другое. Это вызовет GET-запрос. POST-запрос не имеет особого смысла, поскольку вы не изменяете состояние: GET-запросы не должны иметь побочных эффектов, а POST-запросы обычно используются для создания, обновления или удаления данных.

Вашу точку зрения также можно упростить: извлечение User является не необходимым:

from django.shortcuts import get_object_or_404


class ProfileView(DetailView):
    model = Profile

    def get_object(self, *args, **kwargs):
        return get_object_or_404(Profile, user__username=myslug)
Вернуться на верх