Django页面需登录后访问

前提

Django项目早已创建,app也添加了几个。

这次新加一个app,页面是模板开发,ajax更新,数据部分直接走sql语句,没有定义Model。

需求

已经开发的页面,想通过自带的权限和登录来控制,未登录的情况下,跳转登录,然后返回原页面。

步骤

  1. 主项目的url.py文件内,保证admin可访问:
urlpatterns = [
    path('admin/', admin.site.urls),
    ...
]
  1. app中的apis.py文件内,为访问页面的接口添加装饰器
@login_required(login_url='/admin/login/')
def mypage(request):
    ...

这样在打开http://127.0.0.1:8000/mypage的时候,
会重定向到http://127.0.0.1:8000/admin/login/?next=/mypage
登录完成后,返回/mypage页面。

问题

期间遇到一个问题,重定向的时候,发生2次重定向,
url变成http://127.0.0.1:8000/admin/login/?next=/admin/login/?next=/mypage
可以发现地址被嵌套了
是因为装饰器的参数写错

# 错误写法
@login_required(login_url='/admin/login')
# 正确写法
@login_required(login_url='/admin/login/') # 最后有一个斜杠才对
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容