Как вставить имя пользователя django в путь через представление? - PullRequest
1 голос
/ 25 апреля 2020

Я наивный Django пользователь. Я реализовал функцию входа с пользовательской моделью Django. Вот файл urls.py моего проекта:

from django.contrib import admin
from django.urls import path,include
from django.conf.urls import url
from signin import views as viewsignin

urlpatterns = [
    path('',include('signin.urls')),
    path('dashboard/',include('dashboard.urls')),
    path('admin/', admin.site.urls),
]

Вот urls.py приложения моей панели мониторинга, который дает путь к представлению панели мониторинга после входа пользователя в систему.

from django.urls import path
from . import views

urlpatterns = [
path('dashboard/',views.dashboard,name='dashboard'),
]

Вот Фрагмент views.py моего приложения для входа:

def signin(request):
    message={}
    if request.method=='POST':
        user =authenticate(username=request.POST['email'],password=request.POST['pwd'])
        print(user,request.POST['email'],request.POST['pwd'])
        if user:
            print("User exists")
            if user.is_active:
                login(request, user)
                USER = User.objects.get(email=request.POST['email'])
                return redirect('dashboard)#I HAVE A PROBLEM HERE
        else:
            message['cred_err']=True

    return render(request,'signin/signin.html',context=message)

Я хочу, чтобы при успешном входе в систему на пути к панели инструментов отображалось имя пользователя, вошедшего в систему. Пожалуйста, помогите!

1 Ответ

1 голос
/ 25 апреля 2020

Вы должны добавить параметр в представление dashboard:

urlpatterns = [
    path('dashboard/<b><str:username></b>',views.dashboard,name='dashboard'),
]

, затем вы можете перенаправить на панель управления с именем пользователя как:

def signin(request):
    message = {}
    if request.method == 'POST':
        user = authenticate(username=request.POST['email'],password=request.POST['pwd'])
        if user and user.is_active:
            login(request, user)
            <b>return redirect('dashboard', username=user.username)</b>
        else:
            message['cred_err'] = True
    return render(request,'signin/signin.html',context=message)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...