как правильно перенаправить из одного приложения в другое приложение в Django - PullRequest
1 голос
/ 12 октября 2019

Я новичок в Django и не могу правильно обрабатывать перенаправления из одного приложения в другое. У меня 2 приложения Аккаунты, Панель инструментов. Учетные записи Управляет входом в систему и регистрацией AuthUser. Панель инструментов обрабатывает другие функции, такие как Fileupload

. До сих пор я успешно использовал метод reverse () для перенаправления с / accounts / login на мою страницу загрузки, но перенаправляет из / account / login в / account / upload вместо /панель инструментов / загрузка.

URL проекта

urlpatterns = [
    path('dashboard/', include('Dashboard.urls')),
    path('accounts/', include('Accounts.urls')),
    path('admin/', admin.site.urls),
]

Аккаунт urls.py

urlpatterns = [
    url('upload',DashboardViews.upload, name='upload'),
    path('login', views.login, name='Login'),
    path('register', views.register, name='Register'),
    path('logout', views.logout, name='logout')
]

Аккаунтviews.py

def login(request):
    if request.method == 'GET':
        return render(request, 'login.html')
    if request.method == 'POST':

        user_name = request.POST.get("username")
        password = request.POST.get("password")

        user = auth.authenticate(username=user_name,password=password)

        if user is not None:
            auth.login(request,user)
            return redirect(reverse('upload'))
        else:
            print('Failed') 
            return render(request,'login')

Я намерен каждый раз, когда пользователь (логин / регистрация), веб-страницу перенаправлять с / account / login на /dashboard/upload.

1 Ответ

1 голос
/ 12 октября 2019

Это потому, что у вас есть upload url, определенный в urlpatterns вашего Accounts приложения.
Вы должны поместить его в файл urls.py из Приложение Dashboard , если вы хотите, чтобы полный путь был / dashboard / upload вместо / accounts / upload .

Чтобы объяснить это немного подробнее,когда вы определяете путь с помощью функции include , например:

   path("accounts/", include("Accounts.urls")

Все URL-адреса из приложения «Учетные записи» будут иметь добавление «account /» в начале.

Примечание. Если вы добавите параметр name в path , вы можете использовать его в all ваших apps с реверс функция. Путь не должен быть объявлен в том же приложении, где вы хотите вызвать функцию reverse.

Хорошей практикой во избежание конфликтов URL-адресов является добавление имени приложения в URL-адрес. Поэтому вам, возможно, следует назвать путь upload как dashboard_upload .

...