gpt4 book ai didi

django - 如何防止用户在未登录的情况下访问网页

转载 作者:行者123 更新时间:2023-12-03 09:08:48 24 4
gpt4 key购买 nike

我有一个名为 jobboard.html 的页面,我只希望 super 用户访问该页面。

现在,我已经创建了用户可以访问 url/login/,输入用户名和密码,然后重定向到/activejobs/的位置。

但是,任何人都可以在浏览器中手动输入/activejobs/并被定向到那里。我不知道如何将在浏览器中输入/activejobs/的人(没有权限)重定向到登录页面。我有一些关于使用 POST 数据并获取用户名和密码以使用 Django 提供的内置用户数据库进行身份验证的想法,但我不确定如何使用当前的设置来做到这一点。

url.py:

    from django.conf.urls import url, include
from django.contrib import admin
from django.contrib.auth import views as auth_views

urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/$', auth_views.login, {'template_name': 'activejobs/login.html'}, name='login'),
url(r'^logout/$', auth_views.logout, {'template_name':
url(r'^activejobs/', include('activejobs.urls')),
]

登录.html:

{% extends 'activejobs/base.html' %}

{% block content %}
<h2>Login</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Login</button>
</form>
{% endblock %}

settings.py 包含此行以使其重定向到 activejobs url:

LOGIN_REDIRECT_URL = '/activejobs/'

activejobs/urls.py:

    from django.conf.urls import url
from . import views

app_name = 'activejobs'

urlpatterns = [
url(r'^$', views.BoardView.as_view(), name='board'),
url(r'^(?P<contactId>[0-9]+)/$', views.ViewContactDetails, name='detail'),
]

activejobs/views.py:

from django.shortcuts import render
from django.views import generic
from getrate.models import ContactInfo
from django.contrib.auth import authenticate, login

class BoardView(generic.ListView):

template_name = 'activejobs/jobboard.html'
context_object_name = 'all_jobs'

def get_queryset(self):
return ContactInfo.objects.filter(isActive = True)

我觉得 BoardView 是我处理帖子数据以验证用户名和密码的地方,但我不确定如何编写代码。

如有任何帮助,我们将不胜感激。

谢谢

最佳答案

@loginrequired

或相关的东西(该函数必须在下面的函数之前运行)

两种方式,只需检查(应该在rest api中使用用户)

request.user.(bla bla)

关于django - 如何防止用户在未登录的情况下访问网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44689041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com