我正在尝试在我的主网址中包含额外的urls.py - 但它似乎不起作用。我做了很多搜索,我似乎无法弄清楚
main urls.py文件 - 管理员工作正常
from django.conf.urls.defaults import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r'^pnasser/',include('pnasser.urls')),
(r'^admin/',include(admin.site.urls)),
(r'^',include('pnasser.urls')),
)
然后我有一个文件夹pnasser,文件urls.py包含以下内容:
from django.conf.urls.defaults import patterns, include, url
urlpatterns = patterns('pnasser.views',
(r'^$','index'),
(r'^login/$','login'),
(r'^signup/$','signup'),
(r'^insertaccount/$','insertaccount'),
(r'^home/$','home'),
(r'^update/(?P<accid>\d+)','update'),
(r'^history/(?P<accid>\d+)','account_history'),
(r'^logout/(?P<accid>\d+)','logout'),
)
我不确定我是否可能在配置中遗漏了其他内容。如果我访问mysite.com/admin它会正确加载管理员,如果我在视图中转到mysite或任何其他网址,我会找不到404页面:
使用mysite.urls中定义的URLconf,Django尝试了这些URL 模式,按此顺序: 1. ^ pnasser / 2. ^ admin /
当前网址与其中任何一个都不匹配。
修改 settings.py已安装的应用:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
#'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'pnasser',
)
更新2
所以,我也尝试通过开发服务器运行我的网站:python manage.py runserver 0.0.0.0:8000
这有效。我假设我使用mod_wsgi与apache集成的某个地方是问题所在。但是,我不确定问题出在哪里
答案 0 :(得分:3)
问题似乎在django.wsgi文件中 - 以及标准django.wsgi文件如何加载python站点与开发服务器如何加载站点的区别。我想这是一个众所周知的问题,我不知道。感谢大家的建议。
在此处找到替代django.wsgi文件:http://blog.dscpl.com.au/2010/03/improved-wsgi-script-for-use-with.html
答案 1 :(得分:1)
from django.contrib import admin,include
admin.autodiscover()
urlpatterns = patterns('',
(r'^pnasser/',include('pnasser.urls')),
(r'^admin/',include(admin.site.urls)),
(r'^',include('pnasser.urls')),
)
也许你错过了第一行的“包含”
答案 2 :(得分:1)
问题是你正在使用一个空的正则表达式("^"
将匹配任何东西,包括一个空的url)来处理一个include指令。如果这样做,它将始终在您的请求路径上附加第一个斜杠。考虑到你的pnasser.urls不包含“/”的正则表达式,mysite.com上的请求不匹配。
如果您希望mysite.com或mysite.com/带您进入pnasser“索引”视图,您需要具备以下内容:
from django.contrib import admin
from pnasser.views import index
admin.autodiscover()
urlpatterns = patterns('',
(r'^/?$', index),
(r'^pnasser/',include('pnasser.urls')),
(r'^admin/',include(admin.site.urls)),
)
所以,你有:
如果这不起作用,请确保您已安装Django's CommonMiddleware,并让您拥有APPEND_SLASH = True
(这是默认设置,因此如果您不这样做,则不需要这么做在settings.py文件中找不到它。
答案 3 :(得分:0)
Using the URLconf defined in mysite.urls, Django tried these
URL patterns, in this order:
此错误消息应列出所有可能的网址,包括来自您的pnasser应用的“扩展”网址。由于您只是从主urls.py获取网址,因此表示您未在settings.py的pnasser
中正确启用INSTALLED_APPS
应用。
答案 4 :(得分:0)
在您的网址文件中,您可以编写如下内容。 + =显然允许我们在'urlpatterns'变量中添加额外的'模式',这也意味着我们可以将它们包装在'if'语句中。
urlpatterns = patterns('',
(r'^admin/', include(admin.site.urls)),
)
urlpatterns += patterns('',
(r'^api/', include('api.urls')),
)
if settings.SHOP_TOGGLE:
urlpatterns += patterns('',
(r'^shop/', include('shop.urls')),)
)
答案 5 :(得分:-1)
以下适用于我:
如果您的网址无法正常使用,则可能需要添加此行 到位置/:
fastcgi_split_path_info ^()(.*)$;