Что я пытаюсь сделать:
Я хочу щелкнуть ссылку на своей странице, а затем перейти на другую из моих страниц.
login. html:
{% block body %}
<h1>Login</h1>
{% if message %}
<div>
{{ message }}
</div>
{% endif %}
<form action="{% url 'login' %}" method="post">
{% csrf_token %}
<input name="username" type="text" />
<input name="password" type="password" />
<input type="submit" value="Login" />
</form>
<a class="btn btn-primary" href="{% url 'new_user' %}">New user</a>
{% endblock %}
new_user. html:
{% block body %}
<h1>New user</h1>
{% if message %}
<div>
{{ message }}
</div>
{% endif %}
<form action="{% url 'new_user' %}" method="post">
{% csrf_token %}
<input name="username" type="text" />
<input name="password" type="password" />
<input name="email" type="email" />
<input type="submit" value="Login" />
</form>
{% endblock %}
urls.py в основном приложении:
urlpatterns = [
path("", include("orders.urls")),
path("new_user/", include("users.urls")),
path("login/", include("users.urls")),
path("admin/", admin.site.urls),
]
urls.py у пользователей:
urlpatterns = [
path("", views.index, name="index"),
path("login", views.login_view, name="login"),
path("logout", views.logout_view, name="logout"),
path("new_user", views.new_user_view, name="new_user")
]
views.py:
def index(request):
if not request.user.is_authenticated:
return render(request, "users/login.html", {"message": None})
context = {
"user": request.user
}
return render(request, "users/user.html", context)
def login_view(request):
username = request.POST["username"]
password = request.POST["password"]
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return HttpResponseRedirect(reverse("index"))
else:
return render(request, "users/login.html", {"message": "Invalid credentials."})
def new_user_view(request):
username = request.POST["username"]
password = request.POST["password"]
user = User.objects.create_user(username=username, password=password)
if user is not None:
user.save()
login(request, user)
return HttpResponseRedirect(reverse("index"))
else:
return render(request, "users/new_user.html", {"message": "Invalid credentials."})
Поведение: Что происходит, если я go на localhost:8000/login
нажимаю ссылку для нового пользователя, мой браузер перенаправляет меня на localhost:8000/new_user
, но все еще отображает логин. html, а не new_user. html
Чего мне не хватает?