Лучший способ перехватить URL приложения в django cms? - PullRequest
0 голосов
/ 12 февраля 2020

Здесь я создал новую страницу с django cms, добавил заголовок и прикрепил шаблон. Теперь в этом шаблоне я хочу отобразить объекты из базы данных, поэтому я создал новое приложение и записал несколько моделей и видов. При этом процессе при создании новой страницы django cms создает новый URL для этой страницы и для того, чтобы работать с моим приложением / представлениями мне нужно сопоставить это представление с точным URL-адресом, созданным django -cms, в противном случае данные представлений не отображаются в шаблоне.

Так что есть какие-либо решения, чтобы я мог автоматически сопоставьте файл app / urls.py с URL-адресами django -cms.

project / urls.py

path('', include('myapp.urls')),

myapp / urls.py

app_name = 'myapp'
urlpatterns = [
    path('some-path/', views.views..., name='some_name'),

app_cms_integration / cms_app.py

from cms.app_base import CMSApp
from cms.apphook_pool import apphook_pool

@apphook_pool.register  # register the application
class MyApphook(CMSApp):
    app_name = "myapp"
    name = "My Application"

    def get_urls(self, page=None, language=None, **kwargs):
        return ['myapp.urls']

myapp / views.py

def some_view(request):
    objs = Model.objects.all()
    return render(request, 'template', {'objs':objs})

1 Ответ

0 голосов
/ 18 февраля 2020

Просто не в своем уме: опубликована ли страница, содержащая ваш AppHook?

Apphook на самом деле ничего не сделает, пока не будет опубликована страница, к которой он принадлежит. Обратите внимание, что это также означает, что все родительские страницы также должны быть опубликованы.

из DjangoCMS Docs

...