Как мне создать несколько urls.py в приложении django? - PullRequest
0 голосов
/ 11 января 2020

Я хочу разделить URL-адреса приложения django на два URL-адреса с разными именами urls.py и reset_urls.py. Первый, urls.py работает как положено, а второй - нет. Я попробовал очевидный подход, но, похоже, он не работает. Я хочу, чтобы reset_urls.py был конечной точкой для сброса пароля, но после создания, похоже, он не работает. Я знаю, django позволяет переименовывать и иметь несколько urls.py в одном приложении, но я не уверен точно, как это должно быть сделано, даже после проверки документов (не уверен, что я выбрал правильное)

Вот исходный код для URL:

URLconf:

from django.contrib import admin
from django.urls import path, include

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('', include('blog.urls', namespace='blog')),
    path('accounts/', include('users.urls', namespace='account')),
    path('accounts/reset', include('users.reset_urls')),
    path('admin/', admin.site.urls),
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

urls.py

Работает как положено. здесь нет проблем.

from django.urls import path

from users import views
from django.contrib.auth import views as auth_views

app_name = 'account'
urlpatterns = [
    path('profile', views.profile, name='profile'),
    path('register', views.register, name='register'),
    path('login', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'),
    path('logout', auth_views.LogoutView.as_view(template_name='users/logout.html'), name='logout'),
]

reset_urls.py

Не работает должным образом

from django.urls import path
from django.contrib.auth import views as auth_views


urlpatterns = [
    path('password_reset/', auth_views.PasswordResetView.as_view(template_name='users/account/password_reset.html'), 
        name='password_reset'),
    path('password_reset/done/', auth_views.PasswordResetDoneView.as_view(template_name='users/account/password_reset_done.html'), 
        name='password_reset_done'),
    path('password_reset_confirm/<uidb64>/<token>/', auth_views.PasswordResetView.as_view(template_name='users/account/password_reset.html'), 
        name='password_reset_confirm'),
    path('password_reset_complete/', auth_views.PasswordResetView.as_view(template_name='users/account/password_reset.html'), 
        name='password_reset_complete'),
]

1 Ответ

0 голосов
/ 12 января 2020

Создайте папку urls с __init__.py в папке приложения. Затем разделите ваши URL-адреса по своему усмотрению на несколько файлов в папке URL-адресов.

В __init__.py импортируйте ваши URL-адреса как:

from .reset_urls import urlpatterns_reset
from .normal_urls import urlpatterns_normal

urlpatterns = urlpatterns_normal + urlpatterns_reset
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...