Ошибки URL Django
Я изучаю Django и столкнулся с некоторыми проблемами с URL, которые не могу решить.
Я думаю, что это проблема URL, поэтому я не уверен, нужны ли просмотры, но я размещаю их в любом случае (я в некотором отчаянии)
Первая проблема заключается в том, что когда я пытаюсь войти в систему с неправильными учетными данными, я получаю ошибку.
TemplateDoesNotExist at /home/login/
registration/login.html
Request Method: GET
Request URL: http://127.0.0.1:8000/home/login/
Django Version: 3.2.12
Exception Type: TemplateDoesNotExist
Exception Value:
registration/login.html
Exception Location: C:\Users\dell\ofaw\lib\site-packages\django\template\loader.py, line
47, in select_template
Python Executable: C:\Users\dell\ofaw\Scripts\python.exe
Python Version: 3.7.0
Python Path:
['C:\\Users\\dell\\Desktop\\OneForAll\\Django website\\ofaw',
'C:\\Users\\dell\\ofaw\\Scripts\\python37.zip',
'C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python37\\DLLs',
'C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python37\\lib',
'C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python37',
'C:\\Users\\dell\\ofaw',
'C:\\Users\\dell\\ofaw\\lib\\site-packages']
Server time: Sat, 09 Apr 2022 18:43:41 +0000
Template-loader postmortem
Django tried loading these templates, in this order:
Using engine django:
django.template.loaders.app_directories.Loader: C:\Users\dell\ofaw\lib\site-
packages\django\contrib\admin\templates\registration\login.html (Source does not exist)
django.template.loaders.app_directories.Loader: C:\Users\dell\ofaw\lib\site-
packages\django\contrib\auth\templates\registration\login.html (Source does not exist)
django.template.loaders.app_directories.Loader: C:\Users\dell\ofaw\lib\site-
packages\crispy_forms\templates\registration\login.html (Source does not exist)
django.template.loaders.app_directories.Loader: C:\Users\dell\Desktop\OneForAll\Django
website\ofaw\register\templates\registration\login.html (Source does not exist)
django.template.loaders.app_directories.Loader: C:\Users\dell\Desktop\OneForAll\Django
website\ofaw\profiles\templates\registration\login.html (Source does not exist)
В терминале.
django.template.exceptions.TemplateDoesNotExist: registration/login.html
[09/Apr/2022 19:43:41] "GET /home/login/ HTTP/1.1" 500 79486
Дело в том, что папка registration была в моем первом приложении Templates, но я удалил ее, я даже не знаю, почему она все еще отображается. У меня была HTML форма с action="register", которая направляла меня на register.html
Проект urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
# register app urls
path('register/', include("register.urls")),
# profiles app urls
path('', include("profiles.urls")),
path('home/', include("django.contrib.auth.urls")),
path('home/', include("profiles.urls")),
Я получаю 404, когда пытаюсь открыть страницу регистрации, и вот что говорит консоль.
[09/Apr/2022 20:01:49] "GET /register/?
csrfmiddlewaretoken=9ArDF39aQPPWg7xbCtk3k7eTnWJwFyqT4cUVMNZxHLLf6qb0FfgFL9hyFsdy1Dd9
HTTP/1.1" 404 3076
Not Found: /Register/
[09/Apr/2022 20:02:39] "GET /Register/ HTTP/1.1" 404 2918
Not Found: /Register
[09/Apr/2022 20:02:43] "GET /Register HTTP/1.1" 404 2915
Профили urls:
from django.urls import path
from . import views
urlpatterns = [
path("", views.login_user, name="login"),
path("login/", views.login_user, name="login"),
path("logged/", views.logged, name="logged"),
]
Профили просмотров:
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login, logout
from django.contrib import messages
def login_user(request):
if request.method == "POST":
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
messages.success(request, ("There was."))
return redirect("logged")
else:
messages.success(request, ("There was a problem logging in, please try
again."))
return redirect("login")
else:
return render(request, "home/login.html", {})
def logged(response):
return render(response, "home/profile.html", {})
Зарегистрировать урлы:
from django.urls import path
from . import views
urlpatterns = [
path("register/", views.register, name="register"),
]
Регистрация просмотров:
from django.contrib.auth.hashers import check_password
from django.shortcuts import render, redirect
from django.contrib import messages
from .forms import Person, ConfirmPw
# Create your views here.
def register(response):
if response.method == 'POST':
first_form = Person(response.POST)
second_form = ConfirmPw(response.POST)
if first_form.is_valid() and second_form.is_valid():
first_form.save()
second_form.save()
username = first_form.cleaned_data.get("username")
password = first_form.cleaned_data.get("password")
confirm_password = second_form.cleaned_data("password")
match_check = check_password(password, confirm_password)
if match_check == True:
messages.success(response, f"Account created for {username}!")
return redirect("")
else:
raise ValueError("Password don't match!")
else:
first_form = Person()
second_form = ConfirmPw()
return render(response, "register/register.html", {"first_form": first_form,
"second_form": second_form})
