问题标签 [login-required]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4565 浏览

python - 如何测试视图是否用“login_required”(Django)装饰

我正在为一个用“login_required”装饰的视图做一些(隔离的)单元测试。例子:

是否可以测试“my_view”功能是否用“login_required”装饰?

我知道我可以使用集成测试(使用测试客户端)来测试行为(匿名用户被重定向到登录页面),但我想使用隔离测试来完成。

任何想法?

谢谢!

0 投票
2 回答
345 浏览

python - django login_required 装饰器外部视图

我正在尝试login_required在 django 视图之外使用装饰器。我在我的实用程序的一个函数中使用它。

然后我认为这somefunc()

当我这样做时,它说object has no attribute 'user' 这里有什么问题?

0 投票
1 回答
485 浏览

python - 如何使用基于 is_authenticated 与 is_superuser 的 generic.TemplateView 设置模板名称?

我正在使用 Django。我正在尝试根据 django 用户访问级别设置要使用的模板。如您所见,我正在使用 LoginRequiredMixin 和 generic.TemplateView。

这就是我想做的:

此代码在views.py 中使用。

不幸的是,我似乎无法访问该用户。以这种方式。

在views.py 中,我也有根据用户身份验证按预期工作的api 视图。如下:

任何输入表示赞赏。谢谢你。

0 投票
2 回答
3098 浏览

django - Django @login_required not redirecting to login page

I am using class based views in Django. @login_required decorator is not redirecting to login page. It still shows the profile page.

Can anyone help me. I m new to Django and any help would be appreciated.

Thanks in advance

0 投票
2 回答
2073 浏览

django-rest-framework - Django-rest-framework 令牌身份验证不起作用

我正在尝试将 json 数据发布到 url,用 login_required 装饰,但 django 返回重定向到登录页面

DRF 设置:

并且rest_framework.authtokenINSTALLED_APPS

我可以通过 curl 获取身份验证令牌

但是当我 POST 到用 login_required 装饰的视图时,django 返回 http 302,Location标题指向登录页面。

我试图在 rest_framework.authentication.SessionAuthentication 和 rest_framework.authentication.TokenAuthentication 中设置断点,但它们从未被解雇

我的设置有什么问题?请帮忙。

0 投票
1 回答
446 浏览

django - jinja var 未传递给模板

在我的小型 Django webapp 中,我有 4 或 5 个视图/页面。我在每个函数上添加了身份验证,前缀为@login_required().

在所有页面上,我都可以user.username使用 Jinja2 显示变量。

但仅在一页(displaystats.html)上,未找到用户变量或为空...

这是我的观点:

模板很简单:- displaystats.html

导航栏.html:

我试图评论一些行(HTML,更改 jinja2 'if',...),但 displaystats.html 页面不知道 'user' 变量,我不明白为什么。

0 投票
1 回答
219 浏览

django - 对 login_required 视图使用下一个参数

我的登录后重定向 url 的方法,效果很好,但是模板的代码不是很性感,我可以给你吗?我在views.py中的功能

我的模板:

我的装饰师:

0 投票
1 回答
7253 浏览

python - Flask:一次装饰每条路线?

我有@login_required装饰控制器动作的装饰器。但是,我的应用程序非常大,并且在许多不同的控制器文件中有大量路由。一条一条地装饰每条路线似乎很容易出错(我很容易错过一条)并且很耗时。

有没有办法在整个应用程序中一次装饰所有路线?

我正在将身份验证从 Web 服务器 (apache) 转移到应用程序级别,这就是我遇到此问题的原因。

0 投票
1 回答
3688 浏览

django - Django 中的 LOGIN_REDIRECT_URL

我对 Django 很陌生,我即将结束django 女孩教程。我在视图中的 post_detail 上方添加了“@login_required”(用于单击特定帖子的视图)并添加了 login.html 模板。所以当我点击一个帖子标题时,我会被重定向到我的登录页面(到目前为止,一切都很好),网址是:http: //127.0.0.1 :8000/accounts/login/?next=/post/11/ (在我的电脑自动取款机上试试这个。)

然后我输入我的管理员名称/密码并自动重定向到http://127.0.0.1:8000/accounts/profile/并且当然得到“找不到页面(404)”(因为我没有 url/view/模板)。我想“该死,我只是想被重定向到 /post/11/”!

环顾堆栈溢出,发现了这个问题:
Signing in lead to "/accounts/profile/" in Django (sounds about right)
并得到了答案

在您的 settings.py 中更改 LOGIN_REDIRECT_URL 的值。

所以我在 Django 文档中查找了 LOGIN_REDIRECT_URL:

默认值:'/accounts/profile/'

当 contrib.auth.login 视图没有获得 next 参数时,请求在登录后被重定向的 URL 。

例如,它由 login_required() 装饰器使用。

此设置还接受命名 URL 模式,可用于减少配置重复,因为您不必在两个位置(设置和 URLconf)定义 URL。

1.8 版后已弃用:该设置也可能是视图函数的虚线 Python 路径。对此的支持将在 Django 1.10 中删除。

但是我的 contrib.auth.login 没有得到下一个参数吗?(看看我的网址,最后说“?next=/post/11/”)请在这里帮帮我,我对这里可能出现的问题感到迷茫:(

您可以在以下位置查看页面:http:
//finbel.pythonanywhere.com/
和源代码在:
https ://github.com/Finbel/my-first-blog

更新(1):
所以我现在知道 LOGIN_REDIRECT_URL 是决定我下一步在哪里结束的东西,这必须意味着它忽略了 url 中的下一个参数。我进一步搜索了这个问题,发现这个问题与我的问题非常相似,即

文档说明我需要使用“下一个”参数和上下文处理器。我的模板中有 {{next}},但我对如何实际传递“/gallery/(username)”感到困惑。任何帮助将不胜感激。

(我的模板中什至没有 {{next}},我应该在哪里/如何添加它?)

该问题的首选答案似乎是:

Django 的登录视图 django.contrib.auth.views.login 接受一个名为 extra_context 的字典。字典中的值直接传递给模板。所以你可以用它来设置下一个参数。完成后,您可以设置一个名为 next 和 value {{ next }} 的隐藏字段,以便它在模板中呈现。

但我不确定如何解释这一点。在编写此编辑时,我在这篇文章(由 kacperd)上得到了答案,现在将通读)

0 投票
1 回答
1081 浏览

django - django 使用尊重 DRY 的 login_required 装饰器测试视图

我有一个网站,其中所有视图都将受到@login_required 的保护,当然,登录视图除外。
但是,如果我不向请求中添加经过身份验证的用户,使用装饰器将导致调用这些视图的测试失败。我知道这可以在 setUp() 中完成,但是在任何测试类中编写同一行都不尊重 DRY 原则。

还有比这更好的方法吗?