Django вызывает не ту url которую я ему передаю
NoReverseMatch at /web2app/main_page
Reverse for 'open_note' with arguments '('user001',)' not found. 1 pattern(s) tried: ['web2app/open_note/(?P[^/]+)/(?P[^/]+)$']
В файле login_template.html в action вызываю url`ку с названием login и получаю эту ошибку и как из нее вижу вызывается даже не login, а open_note не могу понять почему
urls.py
from django.urls import path
from . import views
app_name = 'web2app'
urlpatterns = [
path('', views.login_page, name = 'login_page'),
path('main_page', views.login, name = 'login'),
path('note_page/<str:username>', views.note_page, name = 'note_page'),
path('open_note/<str:username>/<str:theme>', views.open_note, name = 'open_note'),
path('save_note/<str:username>', views.save_note, name = 'save_note'),
path('registration_page', views.registration_page, name = 'registration_page'),
path('registration', views.registration, name = 'registration'),
path('<int:note_id>/put_text', views.put_text, name = 'put_text')
]
views.py
from django.http import Http404, HttpResponseRedirect
from django.shortcuts import render
from .models import Note, User
from django.urls import reverse
from django.utils import timezone
def login_page(request):
return render(request, 'web2app/login_template.html', {'bool': -1})
def login(request):
user = User.objects.filter(username = request.POST['username'], password = request.POST['password'])
if(len(user) != 0):
user_temp = user[0]
user_notes = user_temp.note_set.all()
return render(request, 'web2app/main_page.html', {'user_notes': user_notes, 'username': user_temp.username})
else:
return render(request, 'web2app/login_template.html', {'bool': 0})
def registration_page(request):
return render(request, 'web2app/registration_template.html', {'bool': -1})
def registration(request):
username = request.POST['Username1']
password = request.POST['Password1']
confirm_password = request.POST['Confirm_password1']
if (password == confirm_password):
user = User(username=username, password=password)
user.save()
user_notes = []
return render(request, 'web2app/main_page.html', {'user_notes': user_notes})
else:
return render(request, 'web2app/registration_template.html', {'bool': 0})
def note_page(request, username):
return render(request, 'web2app/note_template.html', {'username': username}, {'bool_create': 1})
def save_note(request, username):
theme = request.POST['theme']
text = request.POST['text']
date = timezone.now()
last_edit = date
last_user = User.objects.get(username=username)
note = Note(theme=theme, text=text, date=date, last_edit=last_edit, last_user=last_user)
note.save()
user_notes=last_user.note_set.all()
return render(request, 'web2app/main_page.html', {'user_notes': user_notes, 'username': username})
def open_note(request, username, theme):
user = User.objects.get(username = username)
note = user.note_set.all().get(theme=theme)
return render(request, 'web2app/main_page.html', {'note': note}, {'username': username}, {'bool_create': 0})
login_temlate.html
{% extends 'LogInPage.html' %}
{% block login_action %}
<form action="{% url 'web2app:login' %}" method="POST">
{% csrf_token %}
<div class="topnav">
<input type="text" placeholder="Login" required name="username">
</div>
<div class="topnav">
<input type="text" placeholder="Password" required name="password">
</div>
{% if bool == 0 %}
<div class="login-error"> Invalid login or password </div>
{% endif %}
<button class="login_button" type="submit" >LOGIN</button>
</form>
{% endblock %}
main_page.html
{% extends 'base.html' %}
{% block notes %}
{% if user_notes%}
{% for element in user_notes%}
<form action="{% url 'web2app:open_note' username element.theme %}" >
<button class="item">
<h1>{{element.theme}}</h1>
<h2>{{element.text}}</h2>
</button>
</form>
{% endfor %}
{% else %}
<div class="NoNotes"> Oops, it seems like you haven`t add any notes yet, </br> try now CLICK NEW NOTE </div>
{% endif %}
{% endblock %}
{% block user_name%}
{{username}}
{% endblock%}
{% block new_note%}
<form action="{% url 'web2app:open_note' username %}" >
{% csrf_token %}
<button class="sort-button" style="width: 160px"> New note </button>
</form>
{% endblock%}