django login_required для переменных URL - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь написать базовый сайт на Django.Мне нужен пользователь (я все еще использую его по умолчанию), чтобы иметь возможность войти в систему, выйти из системы, зарегистрироваться и т. Д. У меня настроены основные функции, но я хочу, чтобы пользователь мог посещать страницу профиля, где он будетотображать основную информацию о пользователе.Естественно, на странице профиля должен использоваться декоратор login_required, но теперь я настроил его так, что как только кто-то войдет в систему, он сможет увидеть любую страницу профиля.

Часть файла URL:

url(r'^profile/(?P<username>[\w.@+-]+)/$',
    login_required(ProfilePageView.as_view())),

Как видите, URL должен состоять из "профиля /", за которым следует имя пользователя пользователя.Как я могу настроить его таким образом, чтобы эту страницу мог видеть только пользователь с именем пользователя, следующим за частью "profile /" в URL.С помощью этого кода некоторые пользователи могут войти под любым именем пользователя, а затем просто изменить URL-адрес и повторно отправить запрос на получение.

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете сделать что-то вроде этого.если вы создали модель профиля для каждого пользователя, вы также можете получить доступ к информации профиля, используя profile_info = request.user.profile

def login_user(request):
    username=request.POST.get('username','')
    password=request.POST.get('password','')
    user=auth.authenticate(username=username,password=password)
    if user is not None:
        auth.login(request,user)
        return HttpResponseRedirect('/loggin/')

    else:
        return HttpResponseRedirect('/invalid/')



def loggin(request):
    username=None
    if request.user.is_authenticated:
        #profile_info=request.user.profile
        info=request.user
        return render(request,'base.html',locals())


<head>

<body>
<h5>{{info.first_name}}{{info.first_name}}</h5>
</body>
</head>
...