Перезагрузите или загрузите определенный файл urls.py без перезапуска сервера Django - PullRequest
0 голосов
/ 14 апреля 2011

В приложении Django у меня есть определенные файлы urls.py, которые зависят от языка, выбранного пользователем.Это означает, что если кто-то заходит в / en, он должен загрузить urls_en.py, а если / de, то он загрузит urls_de.py.Это легко загрузить оба.Но затем, когда я пытаюсь использовать {% url ....%} в своих шаблонах, он получает первую запись в одном из файлов urls.

Таким образом, это означает, что если я изменю язык, перейдя в форму /ru to / de, urlpatterns остается неизменным, потому что Django их кэширует.И он всегда получает URL из одного файла (первый, который был загружен).

Есть ли способы программной загрузки некоторых пользовательских шаблонов URL во время выполнения кода?Или, может быть, есть несколько способов обновить шаблоны url, и затем в файле urls.py я могу поймать язык (это возможно с помощью get_language () из переводов) и загрузить только один нужный мне файл?

РЕШЕНИЕ:

Django из версии 0.96, если я прав (или 1.0), позволяет переписать загруженные URL-адреса и использовать определенный файл urls.py.Вам просто нужно иметь промежуточное программное обеспечение и fo, например:

def process_request(self, request):
   request.urlconf = 'custom.urls' # this is the python file path to custom urls.py file

После этого Django будет использовать определенные там правила.

Также вы можете использовать пространства имен для URL-адресов, а затем из шаблона вы можете разрешитьURL вот так: {% url namespace:path_to_view args_if_needed %}

Если у кого-то есть другие идеи, поделитесь!:)

...