2010-01-03 2 views
1

Я занимаюсь разработкой приложения в Google App Engine, и одна из функций - auth через Facebook Connect. У меня все настроено и работает до определенного уровня, но чтобы проверить его на моей машине dev, я создал обратный прокси-сервер на одном из моих открытых серверов, которые прокси-серверы до dev-машины.Реализация префикса сайта во всех приложениях

Все работает отлично, за исключением большинства ссылок, без префикса, который я создал для прокси.

Так что, подумал я, есть ли простой способ создать приставку для всего сайта, которая работает не только с моими приложениями, но и с любыми сторонними пользователями, которые я хочу использовать?

Есть ли какое-то промежуточное ПО, которое я могу включить, или фрагмент документов Django, которые я не читал?

** Обновление: ** После комментариев ниже, префикс я думаю идет между тогда доменное имя и приложение URL:

http://example.com/PREFIX/myapp/view/

ответ

2

Создайте URL-адреса для myapp, чтобы быть автономными (чтобы его URL-адреса могли быть «включены» в URL-адреса другого проекта).

urlpatterns = patterns ('', 
    (r'^$', 'myapp.views.index'), 
    (r'^view/$', 'myapp.views.view'), 
    ... 
) 

Обратите внимание, что вы не прикладывая «MyApp» в ваших URL-адресов в данный момент, а просто иметь базовую схему URL, который может быть направлен туда, куда вы хотите во время развертывания.

Затем создайте отдельный модуль привязок для каждого целевого развертывания (например, тест по сравнению с производством) и использовать django.conf.urls.defaults.include function телеграфировать в URL-адрес в любого сколь угодно глубоко базовый URL, которые вы хотите:

from django.conf.urls.defaults import * 

urlpatterns = patterns('', 
    (r'^PREFIX/myapp/', include('myapp.urls')), 
    (r'^PREFIX/myapp2/', include('myapp2.urls')), 
    (r'^PREFIX/myapp3/', include('myapp3.urls')),  
) 

Укажите ваши deploy settings.py, чтобы использовать этот модуль URLconf вместо того, чтобы указывать прямо на модуль URL для myapp.

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

+0

Спасибо, Джо, мне нужно будет исправить любые сторонние приложения, которые я хочу использовать, чтобы я не работал так. Проблема возникает, когда есть ссылки и т. Д. В шаблонах, которые не знают о моем префиксе. –

+0

Это работает очень хорошо, и если кто-то еще использует его из-за обратного прокси-сервера, вы можете использовать (?: PREFIX /)? чтобы префикс был опциональным, и он будет реагировать локально без префикса во время разработки. –

0

если префикс находится в домене имя, почему вы не используете корневые URL-адреса?

я всегда использую этот вид URLs, который очень удобно

<a href="/myapp/view">blex</a> 
<img src="/static/img/blex.png"/> 

надеюсь, что это помогает.

+0

Нет, префикс должен находиться между именем домена и действительными адресами приложений. http://example.com/PREFIX/myapp/view например –

+0

как определить новые параметры.PREFIX = 'dev', которые вы можете использовать в своих URL-адресах? – jujule

 Смежные вопросы

  • Нет связанных вопросов^_^