Я создал логин \ регистрационную форму для пользователя. Моя проблема в том, что при входе я получаю сообщение об ошибке:
Страница не найдена (404) Метод запроса: GET Запрос
URL: http://127.0.0.1:8000/accounts/profile/
Если вход в систему успешен, он должен перенаправить меня на "home.html". Если я вошел в систему, я обнаружил ошибку выше, и если я нажал кнопку «Назад» в браузере, я был перенаправлен на мой «Home.html», и я успешно вошел в систему.
Другая проблема в том, что когда я выхожу из системы, я перенаправляюсь на страницу выхода из DJANGO по умолчанию вместо моей "logged_out.html".
Views.py
@login_required
def home(request):
return render(request, 'home.html')
def signup(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
raw_password = form.cleaned_data.get('password1')
user = authenticate(username=username, password=raw_password)
login(request, user)
return redirect('home')
else:
form = UserCreationForm()
return render(request, 'signup.html', {'form': form})
Urls.py
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^$', views.home, name='home'),
url(r'^login/$', auth_views.LoginView.as_view(), {'template_name': 'login.html'}, name='login'),
url(r'^logout/$', auth_views.LogoutView.as_view(), {'next_page': 'login'}, name='logout'),
url(r'^signup/$', views.signup, name='signup'),
]
login.html
{% extends 'base.html' %}
{% block content %}
<h2>Log in to My Site</h2>
{% if form.errors %}
<p style="color: red">Your username and password didn't match. Please try again.</p>
{% endif %}
<form method="post">
{% csrf_token %}
<input type="hidden" name="next" value="{{ next }}" />
{% for field in form %}
<p>
{{ field.label_tag }}<br>
{{ field }}<br>
{% for error in field.errors %}
<p style="color: red">{{ error }}</p>
{% endfor %}
{% if field.help_text %}
<p><small style="color: grey">{{ field.help_text }}</small></p>
{% endif %}
</p>
{% endfor %}
<button type="submit">Log in</button>
<a href="{% url 'signup' %}">New to My Site? Sign up</a>
</form>
{% endblock %}
logged_out.html
{% extends 'base.html' %}
{% block content %}
<h2>Why are You leaving :(</h2>
{% endblock %}
base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>{% block title %}Simple is Better Than Complex{% endblock %}</title>
</head>
<body>
<header>
<h1>My Site</h1>
{% if user.is_authenticated %}
<a href="{% url 'logout' %}">logout</a>
{% else %}
<a href="{% url 'login' %}">login</a> / <a href="{% url 'signup' %}">signup</a>
{% endif %}
<hr>
</header>
<main>
{% block content %}
{% endblock %}
</main>
</body>
</html>
home.html
{% extends 'base.html' %}
{% block content %}
<h2>Welcome, {{ user.username }}!</h2>
{% if request.user.is_staff %}
<a href="{% url 'admin:index' %}">link to admin panel</a>
<!--<a href="{% url 'signup' %}">Admin</a>-->
{% endif %}
{% endblock %}