Django — Объединение URL-адресов из разных приложений

#python-3.x #django

Вопрос:

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

В основном я хочу, чтобы на панели навигации была отдельная вкладка с надписью «блоги», и когда вы нажимаете на блоги, она должна перейти по URL-адресу «localhost:8000/пользователи/блоги», а не просто localhost:8000/блоги. Как я могу объединить два приложения таким образом?

Ответ №1:

в вашем «корне» urls.py :

 from django.urls import path, include

urlpatterns = [
    ...
    path('users/', include(('usersapp.urls', 'usersapp'), namespace='usersapp')),
    ...
]
 

В приложении для пользователей urls.py :

 from django.urls import path, include

urlpatterns = [
    ...
    path('blogs/', include(('blogsapp.urls', 'blogsapp'), namespace='blogsapp')),
    ...
]
 

И теперь в ваших шаблонах вам нужно сделать:

 {% url '<namespace>:<urlname>' %}
 

например:

 {% url 'blogsapp:index' %}
 

Комментарии:

1. Спасибо вам за ответ, Эне! Итак, я уже сделал это, но как мне это сделать, чтобы, когда я нажимаю на блоги на своей панели навигации, это переходило в /пользователь/блоги?

2. прямо сейчас это ни к чему не приведет: <li class="nav-item active"> <a class="nav-link" href="#">View Blogs</a> </li>

3. Отредактированный………..

4. сработало как заклинание! Большое вам спасибо!!