URL-адрес и просмотры Django

django django-views django-urls django-1.9 django-1.10

963 просмотра

3 ответа

Так как этот метод сопоставления Django Url с точки зрения не рекомендуется в Django 1.9 и выше

url (r '^ contact / $', 'newsletter.views.contact', name = 'contact'),

url (r '^ about / $', 'home.views.about', name = 'about'),

И это то, что в настоящее время на месте

из новостных рассылок

url (r '^ about / $', 'views.about', name = 'about'),

Как мне сопоставить мой URL для 2 разных просмотров приложения

из дома импортных просмотров

из просмотров импорта новостной рассылки

url (r '^ home / $', 'views.home', name = 'home'), # расположен в доме

url (r '^ about / $', 'views.about', name = 'about'), #located в новостной рассылке

Отображение, как я сделал выше, приведет к ошибке, поэтому мне нужна помощь. Новое в Джанго

Автор: Ogheneneovie Ralph Otutu Источник Размещён: 08.11.2019 11:13

Ответы (3)


1 плюс

Решение

Я не понимаю, что вы имеете в виду, когда используете полное имя модуля, которое считается устаревшим, поскольку это базовая конструкция Python. Но вы можете управлять двумя разными модулями, содержащими подмодули с одинаковыми именами, связывая их с разными псевдонимами, используя оператор import as.

Пример:

from home import views as home_view
from newsletter import views as news_view

Затем вы можете использовать псевдонимы home_viewи news_viewссылаться на каждый модуль вместо viewsвсего объявленного пространства имен.

Вы можете взглянуть на синтаксис оператора import в документации по Python здесь :

Если запрошенный модуль получен успешно, он будет доступен в локальном пространстве имен одним из трех способов:

  • Если после имени модуля следует as, то имя, следующее за as, напрямую связано с импортированным модулем.
  • Если другое имя не указано, а импортируемый модуль является модулем верхнего уровня, имя модуля связывается в локальном пространстве имен как ссылка на импортируемый модуль.
  • Если импортируемый модуль не является модулем верхнего уровня, то имя пакета верхнего уровня, содержащего этот модуль, связывается с локальным пространством имен как ссылка на пакет верхнего уровня. Доступ к импортированному модулю должен осуществляться с использованием его полного имени, а не напрямую
Автор: haey3 Размещён: 20.08.2016 01:01

0 плюса

Пытаться:

from home import views as home_views

from newsletter import views

url(r'^home/$', 'home_views.home', name='home'), #located in home

url(r'^about/$', 'views.about', name='about'), #located in newsletter
Автор: Windsooon Размещён: 20.08.2016 11:38

0 плюса

В качестве альтернативы вы можете импортировать только функции просмотра:

from home.views import home
from newsletter.views import about

urlpatterns = [
    url(r'^home/$', home, name='home'),
    url(r'^about/$', about, name='about'),
]
Автор: knbk Размещён: 20.08.2016 07:00
Вопросы из категории :
32x32