Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:不允许用户在未登录时查看页面_Python_Django_Login Required - Fatal编程技术网

Python Django:不允许用户在未登录时查看页面

Python Django:不允许用户在未登录时查看页面,python,django,login-required,Python,Django,Login Required,我创建了一个非常基本的登录应用程序。登录URL、登录重定向URL和注销URL工作正常 问题是,如果我成功登录,然后关闭窗口(浏览器),然后重新打开浏览器,我就可以完美地搜索url(我只希望看到我是否登录的url)并使用应用程序,而无需再次登录。这不是结束的地方:如果我同时打开两个不同的浏览器:Chrome和Firefox,并且只登录其中一个,那么我可以从另一个浏览器使用应用程序而不会出现问题。 我不想发生这种事。我尝试在url.conf中为索引视图(只有登录后才能看到的页面)使用login_,在

我创建了一个非常基本的登录应用程序。登录URL、登录重定向URL和注销URL工作正常

问题是,如果我成功登录,然后关闭窗口(浏览器),然后重新打开浏览器,我就可以完美地搜索url(我只希望看到我是否登录的url)并使用应用程序,而无需再次登录。这不是结束的地方:如果我同时打开两个不同的浏览器:Chrome和Firefox,并且只登录其中一个,那么我可以从另一个浏览器使用应用程序而不会出现问题。 我不想发生这种事。我尝试在url.conf中为索引视图(只有登录后才能看到的页面)使用login_,在类视图中,我尝试使用stronhold和django大括号。还有别的办法吗?。如果你想看到任何代码,请告诉我。我正在使用django实现的登录和注销(auth)。
您可以在登录重定向到的视图中添加以下内容:

def after_login(request,..):
    if not request.user.is_authenticated():
        redirect('some-non-existence-page-or-404',...)
    #Your code
    return

在登录重定向到的视图中,您可以添加:

def after_login(request,..):
    if not request.user.is_authenticated():
        redirect('some-non-existence-page-or-404',...)
    #Your code
    return

您似乎需要使用Django的decorator来包装“private”视图:

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
    ...

如果用户未登录或未通过身份验证,这将重定向到登录URL。

您似乎需要使用Django的decorator包装“private”视图:

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
    ...

如果用户未登录或未通过身份验证,则这将重定向到
LOGIN\u URL

我知道这是一篇旧文章,但也许答案将来会对其他人有所帮助。 如果工作流是基于类的视图,则必须使用:LoginRequiredMixin

from django.contrib.auth.mixins import LoginRequiredMixin
from django.views import generic

class CreateGroup(LoginRequiredMixin, generic.CreateView):
    fields = ('name', 'description')
    model = Group
混入所需的登录名

from django.contrib.auth.mixins import LoginRequiredMixin
from django.views import generic

class CreateGroup(LoginRequiredMixin, generic.CreateView):
    fields = ('name', 'description')
    model = Group
使用基于类的视图时,可以实现与使用LoginRequiredMixin所需的login_相同的行为。此mixin应该位于继承列表中最左侧的位置


我知道这是一篇老文章,但也许这个答案将来会对其他人有所帮助。 如果工作流是基于类的视图,则必须使用:LoginRequiredMixin

from django.contrib.auth.mixins import LoginRequiredMixin
from django.views import generic

class CreateGroup(LoginRequiredMixin, generic.CreateView):
    fields = ('name', 'description')
    model = Group
混入所需的登录名

from django.contrib.auth.mixins import LoginRequiredMixin
from django.views import generic

class CreateGroup(LoginRequiredMixin, generic.CreateView):
    fields = ('name', 'description')
    model = Group
使用基于类的视图时,可以实现与使用LoginRequiredMixin所需的login_相同的行为。此mixin应该位于继承列表中最左侧的位置


我已经尝试过这样做,但没有成功。我已经在我的代码中完成了这项工作,但它似乎不起作用。还有其他想法吗?我正在使用基于类的视图,所以我认为这是一个不同的sintax,但无论如何还是要感谢。我已经尝试过di,但没有成功。我已经在我的代码中完成了这项工作,但它似乎不起作用。还有其他想法吗?我正在使用基于类的视图,所以我认为这是一个不同的sintax,不过还是谢谢你。