Как вызвать правильный метод просмотра в Django? - PullRequest
1 голос
/ 20 сентября 2019

У меня есть проект с этими файлами и папками:

...
old
project
new
common
manage.py
...

Я получаю доступ к "старому", используя http://127.0.0.1:8000/old, и внутри этой папки есть представления, URL-адреса форм и т. Д.все работает нормально.

У меня есть похожие файлы и в "новой" папке.Это также хорошо работает: http://127.0.0.1:8000/old

Однако я сталкиваюсь с проблемами, когда у меня есть метод внутри представления ("method1"), и я объявляю его внутри URL.Однако он ищет method1 внутри папки «old», а не в «new».

$.post('{% url "method1" %}

внутри URL-адреса. У меня есть

path('method/', views.method1, name='method1'),

Я понятия не имею, почему этот js ищет method1 внутри«старый».Когда я объявляю method1 внутри старой папки, он работает нормально.

Что мне здесь не хватает?

Обновление

Работает без js, этот методхорошо, но внутри js-кода он не работает, я поместил js-код здесь:

{% block domready %}
  $('a.cost').click(function(e){
    e.preventDefault();
    $.post('{% url "method1" %}',
      {
        action: $(this).data('action')
      },
      function(data){
        //...
      }
    );
  });
{% endblock %}

1 Ответ

1 голос
/ 20 сентября 2019

Я думаю, у вас есть проблема в вашем другом файле 'urls.py', который, вероятно, находится в каталоге 'project'.

Вам нужно, чтобы оба приложения были в основных urlpatterns вашего проекта:

urlpatterns = [
    path('old/', include('old.urls')),
    path('new/', include('new.urls'))
]

Если вы пытаетесь использовать разные папки для хранения разных вещей, тогда извините, но по умолчанию работает маршрутизатор djangoс приложениями, поэтому у вас есть один каталог на приложение.Так что для «старого» приложения вы делаете все внутри «старой» папки, и если вы хотите создать другое приложение - вам нужно создать его.

Если вы добавите namespace в свои URL-адреса для приложения new, тогда вам нужно поставить префикс перед всеми именами при обратном URL:

{% url "new:method1" %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...