2010-05-24 12 views
8

He creado un sitio de Django que vivirá en la raíz cuando esté activo. En este momento está funcionando perfectamente en la dirección IP. Para fines de prueba, el cliente ha señalado una url de proxy en ella, pero la url tiene/carpeta/ruta en ella, por lo que ninguno de los patrones de URL coincide. Puse (/ folder/path)? en todos los patrones de URL para que ahora respondan, pero todos los enlaces están rotos porque estoy usando la etiqueta {% url%} y aunque los patrones de URL coincidirán con la ruta opcional, no la incluyen en esa etiqueta.Django: Prefijo de URL para todo el sitio

Claramente puedo simplemente codificar/carpeta/ruta en todas mis direcciones URL (bueno, en todas las direcciones URL incluidas) hasta que se completen las pruebas, pero ¿hay una mejor manera de hacerlo?

Respuesta

5

Lo gestiona cuando implementa su aplicación, configurando correctamente el WSGIScriptAlias en su configuración de Apache (suponiendo que esté utilizando mod_wsgi, lo cual debería estar haciendo). Esto se transfiere a Django, que luego automáticamente aplica un prefijo a todas las búsquedas inversas de URL con el valor correcto. No debería necesitar hacer ningún borrado manual con prefijos.

+2

Para aclarar, en otras palabras, asegúrese de que el punto de montaje de URL utilizado con WSGIScriptAlias ​​en la parte posterior coincida con la URL en la que está montado con cualquier proxy de interfaz. Siempre y cuando sean iguales, todo debería funcionar bien con respecto a los prefijos. –

+1

@Daniel ¿qué pasa con el despliegue de nginx + uwsgi? – panchicore

+0

@Daniel Roseman Estoy implementando mi aplicación django en apache localmente en xampp y tengo este 'WSGIScriptAlias ​​/ dj /" c: /xampp/htdocs/commons/mod.wsgi "' pero lo que eres, parece que tengo que prefijar el urls en mi aplicación ya desarrollada con/dj /. Si le entiendo correctamente, dj debe tener el prefijo automatizado, pero ese no es el caso. ¿Qué me estoy equivocando? – flexxxit

1

Para este propósito utilizo URL_PREFIX en settings.py y lo agrego en cada incluir en urls.py. También lo agrego al comienzo de MEDIA_URL, para que funcionen todos los enlaces images/css/js. ¿Pero también me gustaría escuchar acerca de alguna solución más complicada?

0

si WSGIScriptAlias ​​no funciona o no puede configurarlo por alguna razón, recuerde que la función include() en un urlconf agrega el prefijo a todas las URL. puede crear un urlconf que incluya su urlconf raíz actual y montarlo en el prefijo, y luego apunte su archivo settings.py a ese urlconf.

Descargo de responsabilidad: no lo he probado, pero debería funcionar.

Cuestiones relacionadas