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 не воспринимает его как строку в противном случае.