前提
Django项目早已创建,app也添加了几个。
这次新加一个app,页面是模板开发,ajax更新,数据部分直接走sql语句,没有定义Model。
需求
已经开发的页面,想通过自带的权限和登录来控制,未登录的情况下,跳转登录,然后返回原页面。
步骤
- 主项目的
url.py
文件内,保证admin
可访问:
urlpatterns = [
path('admin/', admin.site.urls),
...
]
- 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/') # 最后有一个斜杠才对