如何在django中指定login_required重定向url?

Pol*_*Pol 54 django django-views

我有一个视图功能:

@login_required
def myview():
    # do something
    # respond something
    pass
Run Code Online (Sandbox Code Playgroud)

如何指定要重定向的此视图函数的确切URL?

Bob*_*Bob 74

LOGIN_URL在您的设置中

参考:


kar*_*eek 63

您可以在视图中执行此操作,但无需在settings.py中声明

from django.contrib.auth.decorators import login_required

@login_required(login_url='/example url you want redirect/') #redirect when user is not logged in
def myview(request):
    do something
    return something #returns when user is logged in
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的,并且工作得很好,但总是喜欢使用LOGIN_URL,因为将来更改登录URL可能需要更改很多地方 (4认同)
  • 最好使用 url 名称而不是路径,因为它可以随时更改。 `re_path(r"login$", LoginView.as_view(template_name="registration/login_form.html"), name="player_login")` 然后装饰器是`@login_required(login_url =“player_login”)`当然它取代了设置中的login_url和login_url_redirect。感谢分享。 (2认同)

abe*_*312 10

默认登录网址为:'/ accounts/login /'
如果要更改它,请转到settings.py

LOGIN_URL='/path/to/url'
LOGIN_REDIRECT_URL='/path/to/redirecturl'
Run Code Online (Sandbox Code Playgroud)


vij*_*ker 8

来自文档的这应该是有用的:https: //docs.djangoproject.com/en/1.5/topics/auth/default/#the-login-required-decorator

@login_required(login_url='/accounts/login/')
def my_view(request):
    ...
Run Code Online (Sandbox Code Playgroud)