我在Apache上运行Django(在localhost上)。管理页面工作正常,我的问题在于此页面上的每个链接。由于托管在我们服务器上的共享室使用/admin/
,为了访问我的Django管理页面,我必须更改urls.py
中的以下内容:
urlpatterns = patterns('',
url(r'/admin/', include(admin.site.urls)),
)
要
urlpatterns = patterns('',
url(r'/control/', include(admin.site.urls)),
)
但是,现在当我点击页面上的任何链接(例如Groups
下的Auth
)时,它会将我带到浏览器中的control/auth/group/
,而不是http://localhost/django_ngs/control/auth/group/
}。更改网址后,我必须错过与管理员的连接。我必须附加url的项目部分但不确定如何。有任何想法吗?提前谢谢。
编辑:基本上它不会将目的地附加到当前链接。这些链接指向control/auth/group/
,而不是http://localhost/django_ngs/control/auth/group/
或/control/auth/group/
编辑2 :我只能使用r'/control/'
格式(前面有斜线)访问我的管理页面,而它应该是r'^control/'
,其中包含胡萝卜面前。这可能与我的问题有关(感谢knbk)任何想法?
编辑3:这是我的整个urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'/control/', include(admin.site.urls)),
)
当我使用胡萝卜进入管理页面时,我明白了:
答案 0 :(得分:1)
您的问题位于您网址的django_ngs/
前缀中。 Django并不了解它,所有url模式都是root-relative。
现在,字符串django_ngs/control/
与正则表达式r'/control/'
匹配。如果在正则表达式(r'^control/'
)中包含carot,则需要以提供的模式开头。这通常是你想要的。例如。如果您稍后在/something/
下添加了包含所有网址的其他应用,并且您需要在该应用中添加名为/something/control/
的网页,则网址仍然只会匹配第一个根级网页,而不是第二个/something/
中的页面。
你的链接被破坏的原因是因为Django将url模式反转回url,但模式没有以任何方式描述django_ngs/
前缀。因此,它会在生成的URL中被遗漏。
这里有两个解决方案。要么为每个模式添加django_ngs/
前缀,即:
url(r'^django_ngs/control/', include(admin.site.urls)),
或者您可以将完整的网址配置移动到另一个文件,并将其包含在django_ngs/
下的主网址配置中:
url(r'^django_ngs/', include(myproject.other.file)),