标签: django-login

全局设置要求登录的所有页面?

我想将未经身份验证的用户的访问重定向到登录页面,之后应将登录的用户重定向到最初请求的页面.

根据文档,使用@user_passes_test装饰器很容易实现.但似乎我必须装饰每个视图,这是疯狂的,有太多而且容易出错.

有什么好方法可以全局启用此功能(除了一小组固定视图,例如login)?也就是说,默认情况下,只需登录即可显式处理匿名查看.

django redirect django-login

34
推荐指数
2
解决办法
1万
查看次数

渲染时的NoReverseMatch:反转''django.contrib.auth.views.login''

我正在使用Django的身份验证,在login.html模板中,以下语句生成错误:

{% url 'django.contrib.auth.views.login' %}
Run Code Online (Sandbox Code Playgroud)

/ login时的TemplateSyntaxError

渲染时捕获NoReverseMatch:反向找到''django.contrib.auth.views.login'',其参数'()'和关键字参数'{}'未找到.

这个网址在我的urls.py中定义:

(r'^login$', 'django.contrib.auth.views.login')
Run Code Online (Sandbox Code Playgroud)

我安装了auth系统:

INSTALLED_APPS = (
    'django.contrib.auth',
...
)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

authentication django django-authentication django-login

26
推荐指数
2
解决办法
2万
查看次数

使用Django中的电子邮件地址或用户名登录用户

我正在尝试创建一个auth后端,以允许我的用户使用他们的电子邮件地址或Django 1.6中的用户名使用自定义用户模型登录.当我使用用户名登录时后端工作,但由于某种原因没有电子邮件.有什么我忘了做的事吗?

from django.conf import settings
from django.contrib.auth.models import User

class EmailOrUsernameModelBackend(object):
    """
    This is a ModelBacked that allows authentication with either a username or an email address.

    """
    def authenticate(self, username=None, password=None):
        if '@' in username:
            kwargs = {'email': username}
        else:
            kwargs = {'username': username}
        try:
            user = User.objects.get(**kwargs)
            if user.check_password(password):
                return user
        except User.DoesNotExist:
            return None

    def get_user(self, username):
        try:
            return User.objects.get(pk=username)
        except User.DoesNotExist:
            return None
Run Code Online (Sandbox Code Playgroud)

编辑:建议我从ModelBackend继承并在我的设置中安装它在我的设置中我有这个AUTHENTICATION_BACKENDS =('users.backends','django.contrib.auth.backends.ModelBackend',)我已经将后端更改为这个:

from django.conf import settings
from django.contrib.auth.models import User
from django.contrib.auth.backends …
Run Code Online (Sandbox Code Playgroud)

python django django-authentication django-login

25
推荐指数
6
解决办法
1万
查看次数

Django - 某些视图的用户权限?

从管理员我看到您可以为用户或用户组分配权限,以允许:允许添加,更改或删除模型中的数据.

这很好,但我还需要允许用户或用户组访问或不访问一组视图.我在我的网站上有某种类型的服务,所以我想让一些用户访问某些服务(页面/视图)而不是其他用户.

那么如何允许某些用户/用户组访问某些视图?谢谢!

python django django-authentication django-permissions django-login

22
推荐指数
2
解决办法
3万
查看次数

如何防止用户在已经登录时访问 django 中的登录页面?

在我的 Django 应用程序中,用户即使在登录后也可以通过 URL 访问登录/注册页面。如何防止他们访问这些页面?

网址.py

from django.urls import path
from django.contrib.auth import views as auth_views
from . import views

app_name = 'account'

urlpatterns = [
  path('signup/', views.register, name='register'),
  path('', auth_views.LoginView.as_view(), name='login'),
]
Run Code Online (Sandbox Code Playgroud)

虽然我可以在views.py 中编写if-else 语句来检查经过身份验证的用户,但我没有在 views.py 中使用任何登录功能。我正在使用 django 的默认登录系统和一个authentication.py页面进行自定义登录(使用电子邮件地址进行身份验证)。

认证文件

from django.contrib.auth.models import User

class EmailAuthBackend(object):
    """
    Authenticate using an e-mail address.
    """
    def authenticate(self, request, username=None, password=None):
        try:
            user = User.objects.get(email=username)
            if user.check_password(password):
                return user
            return None
        except User.DoesNotExist:
            return None

    def …
Run Code Online (Sandbox Code Playgroud)

python django django-login

13
推荐指数
1
解决办法
4766
查看次数

我们可以使用django中/ admin的登录页面供我们自己使用吗?

我可以使用以下登录页面:/admin非员工用户登录吗?我在我的django设置文件中使用以下设置:

LOGIN_URL = '/admin/'
LOGIN_REDIRECT_URL = '/'
Run Code Online (Sandbox Code Playgroud)

当我登录时,它不会将我重定向到根文件夹.我是以正确的方式做到的吗?

注意:我@login_required在我的视图中使用装饰器.

编辑

它使用以下URL将我登录到管理站点: http://127.0.0.1:8000/admin/?next=/

python django django-login

8
推荐指数
2
解决办法
6788
查看次数

8
推荐指数
1
解决办法
2585
查看次数

Django-如何使用内置的登录视图与电子邮件而不是用户名?

我在我的应用程序中使用内置登录.有一些自定义后端或程序包来处理这个问题.但其中许多并不是我所期待的.

我在注册时通过django-registration制作了独特的电子邮件.现在我想要的只是在登录页面而不是用户名中询问电子邮件.

但如果我使用django电子邮件等自定义后端作为用户名,则在使用django-registration时会崩溃.

我不想更改所有身份验证后端,我只想更改登录页面.

在网站的其余部分,我将使用用户名.我在写自定义管理页面时pe:

welcome {{user}}
Run Code Online (Sandbox Code Playgroud)

它必须呈现用户名.不是电子邮件.

我需要找到出路.我卡住了.

谢谢.

django django-authentication django-registration django-login

7
推荐指数
1
解决办法
4652
查看次数

如何验证用户身份

我创建了两种不同类型的用户 - 卡车和公司。这是我的用户注册页面在此输入图像描述

注册后,有关用户是卡车还是公司的数据将进入数据库。

在我的登录页面中,登录页面

只需输入电子邮件和密码。在我的自定义用户创建表单中,我添加了字段 username = email。

当我尝试使用有效凭据登录时,该页面不会根据用户类型将我重定向到特定页面。相反,我在 login.html 中为无效凭据创建的错误正在引发 - “您的电子邮件和密码不匹配。请重试。”

这是我的代码:

视图.py:

def login_view(request):
title = "Login"

if request.method == 'POST':

    form = LoginForm(data=request.POST)
    email = request.POST.get('email', '')
    password = request.POST.get('password', '')
    user = auth.authenticate(username=email, password=password)
    if form.is_valid():
        auth.login(request, user)
        user_type = form.cleaned_data['Label']
        if user.is_active & user_type == 'Truck':
            return HttpResponseRedirect('/post_load/')
        elif user_type == 'Company':
            return HttpResponseRedirect('/live_deal/')
else:
    form = LoginForm()

return render(request, 'registration/login.html', {'form' : form, 'title': title})
Run Code Online (Sandbox Code Playgroud)

网址.py:

# url(r'^login/$', views.login_view),
# url(r'^accounts/login/$', views.login_view), …
Run Code Online (Sandbox Code Playgroud)

django django-authentication django-login django-custom-user

7
推荐指数
1
解决办法
2万
查看次数

Django 管理员登录页面 - Python 崩溃

我正在尝试通过命令提示符登录到 Django 帖子的管理员 url 创建超级用户。单击登录按钮后,我收到“Python 已停止工作”。

Python 版本:3.7.0 Django 版本:3.0

  • 第 1 步:使用 django-admin 命令创建网站

  • 第 2 步:使用 runserver 命令验证 Django 默认主页正在加载

  • 第 3 步:尝试 admin/post 创建超级管理员用户。

  • 第 4 步:点击 Post Login 按钮,显示“Python Stopped working”错误。


我试图解决这个问题但没有任何成功

  1. 通过 shell 验证我创建的用户是活动的,超级管理员,is_staff 并且都是真的
    from django.contrib.auth import authenticate

    u = authenticate(username="username", password="password")
Run Code Online (Sandbox Code Playgroud)
  1. 尝试添加和删除SESSION_COOKIE_SECURE = Falsesettings.py

  2. VerifedALLOWED_HOSTS = []settings.py

    我应该怎么做才能看到管理页面?

python django-admin django-login django-3.0

7
推荐指数
1
解决办法
3151
查看次数