gpt4 book ai didi

Django 为用户配置文件创建自定义 URL

转载 作者:行者123 更新时间:2023-12-02 05:07:56 26 4
gpt4 key购买 nike

我有一个允许用户创建个人资料并登录的应用。

当用户登录时,他被重定向到 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

“获取用户名,然后对自定义 URL 执行 HttpResponseRedirect。”

我似乎无法弄清楚如何将用户名作为参数传递给 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(
r'^profile/$',
'pet.views.Profile',
name = 'Profile'
),

我的观点.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})

最佳答案

这将是您的重定向 URL 的正确正则表达式,即。不要修改你拥有的那个。

url(r'^profile/(?P<username>\w+)/$', 'pet.views.myprofileview', name="detail_profile")

然后将参数传递给重定向:

url = reverse('detail_profile', kwargs={'username': profile.firstname})
return HttpResponseRedirect(url)

这导致还必须定义一个新 View :

def myprofileview(request, username):
person = Person.objects.get(user = request.user)
return render(request,'profile.html',{'person':person})

这将消除一个 View 中的两种行为,我觉得这非常好!

我们这样做是因为它是 HttpResponseRedirect 接受的字符串,因此我们必须相应地构建它。

这将重定向到 myprofileview View 和“样式”,如果您可以这样调用它,您的 url /profile/michael/

关于Django 为用户配置文件创建自定义 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15984700/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com