Как предотвратить прямой доступ к URL в Django?
Я новичок в Django и делаю простое веб-приложение, и мне нужно заставить пользователей вводить свои имена и пароли для доступа к следующей странице. Я не хочу, чтобы они получали прямой доступ к любой странице без входа в систему. Я использовал декоратор @login_required, однако, когда я пишу (http://127.0.0.1:8000/logindata/) в браузере, он выдает ошибку "Страница не найдена".
Помогите, пожалуйста,
views.py:
from django.shortcuts import render
from django.http import HttpResponse
from django.db import connection
from django.contrib.auth.decorators import login_required
import pyodbc
def index(request):
if 'Login' in request.POST:
rows = []
username = request.POST.get('username')
if username.strip() != '':
rows = getLogin(username)
if len(rows) > 0:
return render(request, 'login/welcome.html')
else:
return render (request, 'login/index.html')
else:
return render (request, 'login/index.html')
else:
return render (request, 'login/index.html')
def getLogin(UserName=''):
command = 'EXEC GetLogin\'' + UserName + '\''
cursor = connection.cursor()
cursor.execute(command)
rows = []
while True:
row = cursor.fetchone()
if not row:
break
userName = row[0]
password = row[1]
name = row[2]
email = row[3]
rows.append({'userName': userName, 'password': password, 'name': name, 'email': email})
cursor.close()
return rows
@login_required(login_url='/index/')
def readLogin(request):
rows = getLogin()
return render(request, 'login/loginsdata.html', {'rows': rows})
Приложение urls.py:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('logindata/', views.readLogin, name='logindata'),
]
Главный urls.py:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('login.urls')),
]