Я делаю простое приложение для выхода из системы в django. Я получаю ошибку NoReverseMatch, утверждая, что имя шаблона не существует, но оно существует.
Мой каталог проекта выглядит следующим образом:
dryrun_root
-db.sqlite3
-manage.py
-dryrun
-asgi.py
-init.py
-py_cache
-settings.py
-urls.py
-wsgi.py
-dryapp
-admin
-apps.py
-init.py
-migrations
-models.py
-py_cache
-static
-templates
-base.html
-dryapp
-home.html
-login.html
-tests.py
-urls.py
-views.py
dryapp / views.py
from django.views.generic import TemplateView
from django.shortcuts import render
# Create your views here.
class HomePageView(TemplateView):
template_name = 'dryapp/home.html'
dryapp / urls.py
from django.conf.urls import url
from .views import HomePageView
app_name="dryapp"
urlpatterns = [
url('', HomePageView.as_view(), name='_home'),
]
dryapp / templates / dryapp / home. html
{% extends 'base.html' %}
{% block head %}
<title>Home Page</title>
{% endblock %}
{% block body %}
<div class="container">
<h1>Home</h1>
</div>
<div>
<small class="text-muted">
<a class="ml-2" href="{% url 'login' %}">Click here to log in</a>
</small>
</div>
{% endblock %}
Теперь все выглядит нормально. Но следующий шаблон не.
dryapp / templates / dryapp / login. html
{% block body %}
<div class="container">
<h1>Welcome!</h1>
<p>You can login here.</p>
<h2>Login</h2>
<form method="post">
{{ form.as_p }}
{% csrf_token %}
<button type="submit">Login</button>
</form>
</div>
<div class="border-top pt-3">
<small class="text-muted">
No Account? Let's Change That <a class="ml-2" href="{% url '_home' %}">Sign Up</a>
</small>
</div>
{% endblock %}
Этот шаблон не загружается. Я продолжаю получать
NoReverseMatch at /login/
Reverse for _home not found. _home is not a valid view or function name.
Я не вижу, что я делаю неправильно из одного шаблона в другой. Любая помощь очень ценится.