Django.urls инвертирование адресов через несколько списков шаблонов url в одном приложении

У меня есть url.py внутри моего проекта, который включает следующий urls.py (принадлежит моему приложению).

urls.py

from django.urls import path,include
from .views import Index, Foo

bar_urlpatterns = [
path('foo/', Foo.as_view(), name='foo'),
]
        
urlpatterns = [
path('', Index.as_view(), name='index'),       
path('bar/', include(bar_urlpatterns)),]

Я пытаюсь передать подпути пути. В документации говорится, что функция include может включать в себя pattern_list и когда я вызываю url"http://myurl/foo/bar" напрямую, это кажется верным. Я также могу загрузить представление через ajax напрямую, когда я передаю ему строку

Но когда я пытаюсь использовать обратный тег шаблона url {%url 'foo'}, происходит следующее:

Uncaught SyntaxError: Invalid regular expression flags(at ...)

Делаю то же самое с не аутсорсинговыми шаблонами url, работает отлично для меня.

Элементы html, где я использую функцию:

<a onclick="load_tab_view({% url "foo" %})">Foo</a>

<div id="tab_view_replaceable"></div>

js (отлично работает с другими моими представлениями)

function load_tab_view(url){
    replace_id = 'tab_view_replaceable';
        $.ajax({
            url: url,
            type: 'GET',
            dataType: 'html',
            success: function(data){
                $('#'+replace_id).html(data);
            }
        });
    
}

Есть ли способ, с помощью которого я все еще могу передать свои подпункты и использовать тег шаблона reverse url?

(Я не хочу создавать новое приложение для bar)

Вы сможете использовать его, если поместите его в другой вид кавычек. Поэтому чередуйте эти три типа.

В вашем случае это должно работать следующим образом:

<a onclick="load_tab_view(`{% url 'foo' %}`)">Foo</a>
<div id="tab_view_replaceable"></div>

Это потому, что JS не воспринимает его как строку в противном случае.

Вернуться на верх