Python 在Django中自定义登录重定向URL
用户登录后,我想重定向到视图(“profile:profile\u view”) 设置.pyPython 在Django中自定义登录重定向URL,python,django,Python,Django,用户登录后,我想重定向到视图(“profile:profile\u view”) 设置.py LOGIN_REDIRECT_URL = 'profile:profile_view' LOGIN_REDIRECT_URL = 'login_redirect' 我尝试了上面的代码,但没有得到我需要的结果,因为我正在将slug传递到url中 url.py url(r'^(?P<slug>[-\w\d]+)/$', ProfileView.as_view(), name='view_pr
LOGIN_REDIRECT_URL = 'profile:profile_view'
LOGIN_REDIRECT_URL = 'login_redirect'
我尝试了上面的代码,但没有得到我需要的结果,因为我正在将slug传递到url中
url.py
url(r'^(?P<slug>[-\w\d]+)/$', ProfileView.as_view(), name='view_profile'),
@login_required
def login_redirect(request):
return redirect('profile:profile_view', pk=request.user.pk, name=request.user.username)
url.py
url(r'^(?P<slug>[-\w\d]+)/$', ProfileView.as_view(), name='view_profile'),
@login_required
def login_redirect(request):
return redirect('profile:profile_view', pk=request.user.pk, name=request.user.username)
现在我确实在终端中获得了用户名,但是如何使用以下'localhost:8000/username'
views.py
class ProfileView(DetailView):
template_name = "profile/profile_view.html"
queryset = User.objects.all()
context_object_name = 'profile'
我做错了什么?有更好的方法吗?您的配置文件URL只接受一个名为
slug
的参数,但您要向它传递两个名为pk
和name
的参数
首先,更改您的URL,如下所示:
url(r'^(?P<username>[-\w\d]+)/$', ProfileView.as_view(), name='view_profile'),
您还可以在views.py中登录并进行检查,然后使用httpresponseredirect重定向用户: 例如: 在url.py中:
From . Import views
Url(r'$login/', views.login, name="login"),
Url(r'$profile/', viesm.profile, name="profile"),
在视图中.py:
From django.shortcuts import get_object_or_404, render
From django.http import HttpResponseRedirect
Def login(request):
*** place to check if exist in your database***
If ***exist***:
User=request.post["username"]
Request.session["username"]=user
Return httpresponseredirect("../profile")
Else:
Return httpresponseredirect("../login")
Def profile(request):
If "user" in request.session:
Return render(request," **path to your template ", { "username" : request.session["username"] })
else:
Return httpresponseredirect("../login")
我想应该更好