1

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 に設定されたヘッダーのリンクをクリックすると、http://localhost:8000/user-accounts/%5Eregister/ブラウザーに奇妙な URL が表示されます。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')),
]
4

1 に答える 1

0

Django の新しい (>=2.0)path()関数は、正規表現では機能しません。そのため、この^文字は文字通り URL の先頭に追加されます。

正規表現を使い続けたい場合は、re_path()関数を使用してください。

于 2018-09-06T02:10:40.857 に答える