Как функция pattern () становится доступной в пакете django.conf.urls? - PullRequest
1 голос
/ 25 февраля 2012

Для Django 1.3.1, где находится исходный код, позволяющий сделать from django.conf.urls import patterns?

В исходном коде Django 1.3.1 для пакета django.conf.urls, __init__.py пусто, поэтому код или переменная __all__ отсутствуют.Код для функции patterns() выглядит как defaults.py, в котором есть переменная __all__.

Каким образом Python включает функцию pattern() в пакет django.conf.urls?

Ответы [ 2 ]

2 голосов
/ 26 февраля 2012

Я выяснил свою проблему:

  1. Я обнаружил, что был не прав, думая, что я успешно работалfrom django.conf.urls import patternв Джанго 1.3.1.Код был на самом делеfrom django.conf.urls.defaults import pattern

  2. Существует два разных урока по Django:

  3. Я открылБилет Django 17770 для этого, и он был закрыт как дубликат билета 16932. Билет 16933 был открыт и исправлен, чтобы исправить путаницу различных версий документации / учебников.Тем не менее, это не было очевидно для меня.Я добавил скриншот к 16933, показывающий, как увидеть, какую версию документов вы читаете (и выбрать другую версию).enter image description here

  4. Я был смущен, потому что я думал, что используюfrom django.conf.urls import...как говорится в учебнике, и я подумал, что код работает.Но на самом деле я использовал код urls.py, который создается с django-admin.py startproject, и этот код правильно используетfrom django.conf.urls.defaults import...для Джанго 1.3.1.Это сработало.

  5. Моя путаница всплыла в уроке 4, когда я скопировал код polls/urls.py из урока для версии dev.Этот код from django.conf.urls import..., и он вызывает:

    Django Версия: 1.3.1Тип исключения: ImportErrorЗначение исключения: невозможно импортировать шаблоны именРасположение исключения: /.../django_tutorial_1/polls/urls.py в строке 1

jdi, спасибо за вашу помощь.Хотя ваш ответ был не совсем тем, что я искал, это побудило меня продолжать идти.В моем вопросе был указан ложный факт, который я позже обнаружил (согласно № 1 выше).

1 голос
/ 25 февраля 2012

Он находится в модуле по умолчанию внутри пакета urls.

>>> from django.conf.urls.defaults import *
>>> patterns
<function patterns at 0x102444410>

https://code.djangoproject.com/browser/django/tags/releases/1.3.1/django/conf/urls/defaults.py

Я понимаю, что в документах django они ссылаются следующим образом: https://docs.djangoproject.com/en/dev/topics/http/urls/#example

from django.conf.urls import patterns, url, include

Но (по крайней мере для меня) это выдает ошибку.Возможно, он был включен в это место в одной точке, но текущий источник больше не показывает его там.Каждый проект 1.3, который у меня есть, импортирует pattern () из модуля по умолчанию.

Обновление

В документах для ветвей разработчика django ссылки на шаблоны указаны в пакете urls.Но стабильные версии 1.3 указывают на то, что он находится по умолчанию.

https://docs.djangoproject.com/en/dev/topics/http/urls/#how-django-processes-a-request

https://docs.djangoproject.com/en/1.3/topics/http/urls/#how-django-processes-a-request

Так что я бы сказал, что стабильный способ получить к нему доступ через модуль по умолчанию.Скорее всего, вы когда-то использовали dev-ветку django, потому что при создании нового проекта в стабильной версии 1.3 даже определяется его urls.py по умолчанию с расположением по умолчанию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...