У меня есть приложение, которое позволяет пользователям создавать профиль и войти.Джанго Создание пользовательских URL для профиля пользователя
Когда пользователь Войти, он перенаправляется на 127.0.0.1:8000/profile/
проблема заключается в том, я хочу, чтобы настроить URL, добавив имя пользователя до конца URL, например, например 127.0.0.1:8000/profile/michael
Это аналогичный вопрос помоему
Django - after login, redirect user to his custom page --> mysite.com/username
«получить имя пользователя, а затем сделать HttpResponseRedirect на настраиваемый URL».
Я просто не могу понять, как я могу передать имя пользователя в качестве аргумента для HttpResponseRedirect для правильной обработки пользовательского URL.
return HttpResponseRedirect('/profile/?username=%s' % (username, request.path))
def Profile(request):
if not request.user.is_authenticated():
return HttpResponseRedirect(reverse('world:LoginRequest'))
person = Person.objects.get(user=request.user)
return render(request,'profile.html',{'person':person})
мой URL
url(
r'^profile/$',
'pet.views.Profile',
name = 'Profile'
),
NEW
мой views.py
def LoginRequest(request):
if request.user.is_authenticated():
username = User.objects.get(username=request.user)
url = reverse('Profile', kwargs = {'username': username.username})
return HttpResponseRedirect(url)
if request.method == "POST":
form = LoginForm(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
Person = authenticate(username=username, password=password)
if Person is not None:
login(request, Person)
username= User.objects.get(username=request.user)
url = reverse('Profile', kwargs = {'username': username.username})
return HttpResponseRedirect(url)
return render(request, 'login.html',{'form': LoginForm()})
url(
r'^login/$',
'pet.views.LoginRequest',
name = 'LoginRequest'
),
url(
r'^profile/(?P<username>\w+)/$',
'pet.views.Profile',
name = 'Profile'
),
def Profile(request,username):
if not request.user.is_authenticated():
return HttpResponseRedirect(reverse('world:LoginRequest'))
board = Board.objects.filter(user=request.user)
person = Person.objects.get(user__username=username)
return render(request,'profile.html',{'board':board ,'person':person})
Вы форматируете это неправильно. Вы также должны делать это за пределами возврата, и для лучшей читаемости. 'formatted_string =" /profile/?{0}={1}".format(username, request.path) ', а затем' return HttpResponseRedirect (formatted_string) '. –
@ donkeyboy72 Я обновил свой ответ. –
@ donkeyboy72 У вас есть пользователь с именем пользователя limelights? –