Итак, я только начал изучать Джанго, используя видео курс с веб-сайта. Я должен создать аутентификацию сейчас, и у парня, который прошел курс, не возникло никаких проблем, но я знаю. Я получаю 2 разные ошибки, но я думаю, что одна из них появляется из-за другой.
Вот ошибка из кода VS:
Undefined variable 'auth'
В то время как другой с сервера:
The current path, accounts/action="/accounts/login", didn't match any of these.
Используя мою логику, первая не имеет ничего общего со второй, но я полагаю, она не работает из-за этой неопределенной переменной.
Вот views.py из приложения учетной записи
from django.shortcuts import render, redirect
from django.contrib import messages
from django.contrib.auth.models import User
def register(req):
if req.method == 'POST':
first_name = req.POST['first_name']
last_name = req.POST['last_name']
username = req.POST['username']
email = req.POST['email']
password = req.POST['password']
password2 = req.POST['password2']
if password == password2:
if User.objects.filter(username=username).exists():
messages.error(req, 'Username already in use')
return redirect('register')
else:
if User.objects.filter(email=email).exists():
messages.error(req, 'Email already in use')
return redirect('register')
else:
user = User.objects.create_user(username=username, password=password, email=email, first_name=first_name, last_name=last_name)
user.save()
messages.success(req, 'You are now logged in')
return redirect('login')
else:
messages.error(req, 'Passwords do not match')
return redirect('register')
else:
return render(req, 'accounts/register.html')
def login(req):
if req.method == 'POST':
username = req.POST['username']
password = req.POST['password']
user = auth.authenticate(username=username, password=password)
if user is not None:
auth.login(req, user)
messages.success(req, 'You are now logged in')
return redirect('dashboard')
else:
messages.error(req, 'Invalid credentials')
return redirect('login')
return
else:
return render(req, 'accounts/login.html')
def logout(req):
return redirect('index')
def dashboard(req):
return render(req, 'accounts/dashboard.html')
urls.py из основного приложения
urlpatterns = [
path('', include('pages.urls')),
path('listings/', include('listings.urls')),
path('accounts/', include('accounts.urls')),
path('admin/', admin.site.urls),
]
urls.py из приложения учетных записей
urlpatterns = [
path('login', views.login, name='login'),
path('register', views.register, name='register'),
path('logout', views.logout, name='logout'),
path('dashboard', views.dashboard, name='dashboard')
]
login.html
<section id="login" class="bg-light py-5">
<div class="container">
<div class="row">
<div class="col-md-6 mx-auto">
<div class="card">
<div class="card-header bg-primary text-white">
<h4>
<i class="fas fa-sign-in-alt"></i> Login</h4>
</div>
<div class="card-body">
{% include 'partials/_alerts.html' %}
<form action=action="{% url 'login' %}" method="POST">
{% csrf_token %}
<div class="form-group">
<label for="username">Username</label>
<input type="text" name="username" class="form-control" required>
</div>
<div class="form-group">
<label for="password2">Password</label>
<input type="password" name="password" class="form-control" required>
</div>
<input type="submit" value="Login" class="btn btn-secondary btn-block">
</form>
</div>
</div>
</div>
</div>
</div>
</section>
Как я уже сказал, я не знаю, производит ли первое второе или нет, но я думаю, что мне нужно исправить их обоих. Я предполагаю, что это некоторые базовые вещи, и я просто не знаю, как это сделать в django, поэтому мне может понадобиться помощь в исправлении этого с хорошим объяснением.
Большое спасибо.
//// РЕДАКТИРОВАТЬ: у меня была опечатка в index.html, теперь я исправил ее и получаю
NameError at /accounts/login
name 'auth' is not defined