Javascript 使用Django/Django.js和WSGIScriptAlias反转URL
我的django项目在我的生产环境中遇到了问题。当我为“WSGIScriptAlias”apache指令使用别名时,看起来我的反向URL有问题。事实上,问题可能与模块有关,因为它似乎没有考虑“WSGIScriptAlias” 下面是我的apache配置:Javascript 使用Django/Django.js和WSGIScriptAlias反转URL,javascript,django,url,Javascript,Django,Url,我的django项目在我的生产环境中遇到了问题。当我为“WSGIScriptAlias”apache指令使用别名时,看起来我的反向URL有问题。事实上,问题可能与模块有关,因为它似乎没有考虑“WSGIScriptAlias” 下面是我的apache配置: <VirtualHost *:80> DocumentRoot /MyPath/django_proj/pti/pti WSGIScriptAlias /pti /MyPath/django_proj/pti/pti
<VirtualHost *:80>
DocumentRoot /MyPath/django_proj/pti/pti
WSGIScriptAlias /pti /MyPath/django_proj/pti/pti/pti_project/wsgi.py
WSGIDaemonProcess pti python-path=/MyPath/django_proj/pti/pti:/MyPath/django_proj/pti/lib/python2.7/site-packages
WSGIProcessGroup pti
Alias /media/ /MyPath/django_proj/pti/pti/media_root/
Alias /static/ /MyPath/django_proj/pti/pti/static_root/
ErrorLog /var/log/apache2/pti-error_log
<Directory /MyPath/django_proj/pti/pti/pti_project/>
<Files wsgi.py>
Allow from all
</Files>
</Directory>
<Directory /MyPath/django_proj/pti/pti/static_root/>
Order deny,allow
Allow from all
</Directory>
<Directory /MyPath/django_proj/pti/pti/media_root/>
Order deny,allow
Allow from all
</Directory>
这部分似乎很好用。但当我使用fonction获取数据时,问题就来了。以下是我的url的pti_映射配置文件,其中存储了我的数据:
urlpatterns = patterns('pti_map.views',
url(r'^$', 'map_index', name='map_index'),
url(r'^ptiretrait.geojson$', MapLayer.as_view(model=PtiRetrait), name='ptiretrait'),
url(r'^ptiencours.geojson$', MapLayer.as_view(model=PtiEnCours), name='ptiencours'),
url(r'^ptinouvelle.geojson$', GeoJSONLayerView.as_view(model=PtiNvlleDetection, precision = 5, simplify=0.5, properties = ('etat', 'friche', 'age', 'acces', 'culture', 'bati', 'voisinage', 'defrichement', 'mecanisable', 'irrigable', 'commentaire')), name='ptinouvelle'),
url(r'^newptisubmit$', 'newptisubmit', name='newptisubmit'),
url(r'^newptiedit$', 'newptiedit', name='newptiedit'),
url(r'^newptimodifygeom$', 'newptimodifygeom', name='newptimodifygeom'),
url(r'^ptiTable$', 'ptiTable', name='ptiTable'),
url(r'^sendEmail$', 'sendEmail', name='sendEmail'),
url(r'ajax_file_upload$', 'ajax_file_upload', name="ajax_file_upload"),
)
当我尝试使用此函数获取反向URL时,它似乎没有考虑我的WSGIScriptAlias。因此,使用django.js反向URL函数
Django.url('pti\u map:ptinovelle')
是:
http://MyServer/pti_map/ptinouvelle.geojson
而不是我所期望的:
http://MyServer/pti/pti_map/ptinouvelle.geojson
我可以确认“django.js”似乎没有考虑我的WSGIScriptAlias。下面是我的console.log(Django.url)
的结果:
如果我想让它工作,我必须在JS文件中硬编码WSGIScriptAlias:
var url=“/pti”+Django.url('pti\u map:ptinovelle')
通过在URL的开头添加“/pti”,我可以获得我的数据,但这是一个丑陋的黑客行为,它破坏了我与开发平台的兼容性
你知道我怎样才能解决这个问题吗
谢谢
Arnaud这仅仅是因为您的Django应用程序不知道您的web服务器正在进行的重写或路由,这超出了它的范围 您可能已经进行了别名处理,因为您希望在其他路径上承载其他内容。如果是这种情况,那么您可以做的是,您可以在内部将请求路由到/pti_映射到/pti_映射/pti_映射,并使用别名/pti_映射到脚本 在将请求路由到脚本时,wsgi容器将吃掉第一个“pti_映射”,并转发下一个 希望我理解正确
urlpatterns = patterns('pti_map.views',
url(r'^$', 'map_index', name='map_index'),
url(r'^ptiretrait.geojson$', MapLayer.as_view(model=PtiRetrait), name='ptiretrait'),
url(r'^ptiencours.geojson$', MapLayer.as_view(model=PtiEnCours), name='ptiencours'),
url(r'^ptinouvelle.geojson$', GeoJSONLayerView.as_view(model=PtiNvlleDetection, precision = 5, simplify=0.5, properties = ('etat', 'friche', 'age', 'acces', 'culture', 'bati', 'voisinage', 'defrichement', 'mecanisable', 'irrigable', 'commentaire')), name='ptinouvelle'),
url(r'^newptisubmit$', 'newptisubmit', name='newptisubmit'),
url(r'^newptiedit$', 'newptiedit', name='newptiedit'),
url(r'^newptimodifygeom$', 'newptimodifygeom', name='newptimodifygeom'),
url(r'^ptiTable$', 'ptiTable', name='ptiTable'),
url(r'^sendEmail$', 'sendEmail', name='sendEmail'),
url(r'ajax_file_upload$', 'ajax_file_upload', name="ajax_file_upload"),
)
pti_map:ptiencours "/pti_map/ptiencours.geojson"
pti_map:ptinouvelle "/pti_map/ptinouvelle.geojson"
pti_map:ptiretrait "/pti_map/ptiretrait.geojson"