url закодированные символы при нажатии на ссылку и страница не найдена
Я получаю следующую ошибку при использовании Django 2.1:
Page not found (404)
Request Method: POST
Request URL: http://localhost:8000/user-accounts/%5Eregister/
Using the URLconf defined in my_project.urls, Django tried these URL patterns, in this order:
admin/
user-accounts/ ^register/$ [name='register']
user-accounts/ ^login/$ [name='login']
user-accounts/ ^logout/$ [name='logout']
bank-accounts/
The current path, user-accounts/^register/, didn't match any of these.
Когда я нажимаю на ссылку в наборе заголовков в моем base.html, я получаю странный URL http://localhost:8000/user-accounts/%5Eregister/
в браузере. Ссылки в base.html:
<li class="dropdown-header"><a href="{% url 'user-accounts:register' %}">Register</a></li>
<li class="dropdown-header"><a href="{% url 'user-accounts:login' %}">Login</a></li>
Приложение учетных записей пользователей urls.py:
from django.urls import path
from django.contrib import admin
from . import views
app_name = 'user-accounts'
urlpatterns = [
path(r'^register/$', views.register, name='register'),
path(r'^login/$', views.user_login, name='login'),
path(r'^logout/$', views.user_logout, name='logout'),
]
Проект urls.py:
from django.contrib import admin
from django.urls import path, include
from user_accounts.views import register
urlpatterns = [
path('admin/', admin.site.urls),
path('', register),
path(r'user-accounts/', include('user_accounts.urls')),
path(r'bank-accounts/', include('bank_accounts.urls')),
]
1 ответ
Новый Джанго (>=2.0) path()
функция не работает с регулярными выражениями. Вот почему ^
символ буквально добавляется к URL.
Если вы хотите продолжать использовать регулярные выражения, используйте re_path()
функция.