我有一個叫jobboard.html,我只希望超級用戶訪問頁面。如何防止用戶訪問一個網頁,而不登錄
現在我已經創建了的地步,用戶可以到網址/登錄/,輸入自己的用戶名和密碼,然後他們將被重定向到/ activejobs /。
然而,任何人都可以手動輸入/ activejobs /到瀏覽器中以及在那裏被引導。我不確定如何將瀏覽器中輸入/ activejobs /的用戶(沒有權限)重定向到登錄頁面。我已經使用POST數據和獲取用戶名和密碼,將其與內置的用戶數據庫Django提供了身份驗證的一些想法,但我不知道如何使用我的當前設置做到這一點。
urls.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')),
]
的login.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網址:
LOGIN_REDIRECT_URL = '/activejobs/'
activejobs /網址的.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是我處理後的數據來驗證用戶名和密碼,但我不知道如何代碼,在
。任何幫助,將不勝感激。
感謝,
嘗試使用中間件 – GeekSilva