Django项目URL与应用URL间出现空格导致失效的求助
解决Django 1.1路由失效:项目URL与应用URL间出现空格的问题
服务器重启后路由失效,核心大概率是**main_config.url_prefix加载出了问题**——这个变量本身带上了多余空格,导致和后续路径拼接后生成了带空格的URL规则,直接破坏了路由匹配逻辑。下面是具体的排查和修复步骤:
1. 先锁定问题根源:检查url_prefix的真实值
你可以在项目的urls.py里加一行调试代码,直观看到这个变量的内容(包括空格这类不可见字符):
from django.conf.urls import patterns, include, url from main.main_config import main_config from django.contrib import admin # 新增调试代码:用repr显示变量的原始形态,能暴露空格、换行等问题 print("当前URL前缀:", repr(main_config.url_prefix)) admin.autodiscover() # ... 保留原有urlpatterns代码不变
启动服务器后看控制台输出,如果结果是类似当前URL前缀: 'myapp '(末尾带空格)或者'my app/'(中间有空格),那问题就确认了。
2. 修正url_prefix配置
打开main/main_config.py,找到url_prefix的定义,确保它的值没有多余空格,并且格式规范(建议末尾保留斜杠,避免路径拼接时出现断裂):
# 正确示例:无空格,末尾带斜杠 url_prefix = "myapp/" # 需要避免的错误写法: # url_prefix = "myapp " # 末尾多了空格 # url_prefix = "my app/" # 中间包含空格
3. 验证修复效果
修正后重启服务器,此时项目生成的URL规则会变成^myapp/activation/这类正常格式,和应用urls.py里的规则结合后,就能正常匹配请求了。
另外提个小优化建议:你的应用urls.py里部分规则没有加^开头(比如url(r'checkConnection', ...)),虽然Django默认会从路径开头匹配,但显式加上^能让规则更严谨,避免意外匹配到包含该字符串的其他路径,比如改成:
url(r'^checkConnection', views.checkConnection, name='checkConnection'), url(r'^c94372af', views.checkConnection, name='checkConnection'), url(r'^get_data_everyday', views.get_data, name='get_data_everyday'),
内容的提问来源于stack exchange,提问作者Wind
相关产品推荐
相关产品推荐

