Sé que esto es una pregunta bastante viejo ... pero creo que he encontrado una solución:
Como Will Hardy sugerido que tendrá que mantener app_name
el mismo para ambos casos (o no define en absoluto , se aplicará de manera predeterminada a la aplicación en la que residen las URL incluidas). Definir un espacio de nombres separado para cada instancia de aplicación embargo:
urlpatterns = patterns('',
(r'^carphotos/', include('webui.photos.urls', app_name="webui_photos", namespace='car-photos')),
(r'^userphotos/', include('webui.photos.urls', app_name="webui_photos", namespace='profile-photos')),
)
Ahora viene la parte un poco difícil de establecer la instancia aplicación activa en ese momento (espacio de nombres) en sus puntos de vista. Lo que significa que tiene que averiguar qué instancia de aplicación está activa y pasarla al RequestContext
.
para encontrar la aplicación activa en ese momento, django.core.urlresolvers.resolve
se puede utilizar:
r = resolve(request.path)
r.app_name # the app name
r.namespace # the the currently active instance
por lo que tendrá que actualizar sus puntos de vista (esto supone el uso de los puntos de vista basados clase) en consecuencia:
from django.core.urlresolvers import resolve
from django.views.generic import TemplateView
class AlbumCreateView(TemplateView):
template_name = 'path/to/my/template.html'
def render_to_response(self, context, **response_kwargs):
response_kwargs['current_app'] = resolve(self.request.path).namespace
return super(AlbumPageView, self).render_to_response(context, **response_kwargs)
Ahora la etiqueta url automáticamente revertirá al espacio de nombres correcto y aún permitirá la reversión a un espacio de nombres de aplicación específico si es necesario:
{% url webui_photos:album-create %} {# returns the url for whatever app is current #}
{% url car-photos:album-create %}
{% url profile-photos:album-create %}
Para invertir las direcciones URL en las vistas, la instancia de aplicación actual tiene que ser aprobada en forma manual:
reverse('webui_photos:album-create', current_app=resolve(self.request.path).namespace))
leí documentos que se sugieran. No creo que sea la respuesta correcta. De acuerdo con la documentación, el marco de sitios es útil cuando desea compartir información entre sitios, pero en mi caso solo hay un sitio. Técnicamente es posible implementar mi aplicación de fotos en diferentes subdominios, pero creo que es incorrecto crear dominios separados para cada instancia de aplicación reutilizable. – Nike