避免 django 中的 /accounts/login/?next

Mak*_*iii 5 python django

urls.py

#...
from myapp.views import MyView
from django.contrib.auth.decorators import login_required


urlpatterns = [
    #....
    url(r'^terminator/', login_required(MyView.as_view()), name='sexy')
    
]
Run Code Online (Sandbox Code Playgroud)

视图.py

class MyView(View):
    
    
    def get(self, request):
        return render(request, 'itworks.html')
    
Run Code Online (Sandbox Code Playgroud)

我正在MyView通过Somelogin重定向到“terminator url”的类访问类。但问题是:django 将我重定向到以下 url http://127.0.0.1:8000/accounts/login/?next=/terminator。

当然,这个地址没有定义,给了我 404。

我LOGIN_REDIRECT_URL在设置中进行了操作,但这只会给代码带来更多混乱。那么有没有办法避免 django 中的这种“默认/下一个”并直接转到http://127.0.0.1:8000/terminator.

小智 5

您需要LOGIN_URL在您的settings.py. 这将覆盖帐户/登录的默认 URL。

添加到您的设置:

LOGIN_URL = 'login'
Run Code Online (Sandbox Code Playgroud)

前:

LOGIN_URL = 'login'
Run Code Online (Sandbox Code Playgroud)

后:

http://localhost:8000/accounts/login/?next=/password/reset
Run Code Online (Sandbox Code Playgroud)


小智 0

您可以通过进入管理员并登录来避免这种情况,这样您就不会被重定向。我通过 url(r'^accounts/',include(admin.site.urls)) 在 urls.py 文件中添加:解决了这个问题。希望能帮助到你