Python 在Django中自定义登录重定向URL

Python 在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

用户登录后,我想重定向到视图(“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_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")
我想应该更好