Django,urls.py,包括似乎没有工作
我想在我的主要网址中包含一个额外的urls.py - 但它似乎并没有工作。我已经做了一堆搜索的,我似乎无法弄清楚Django,urls.py,包括似乎没有工作
主要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,与文件的URL .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定义的URL配置,Django的这些尝试URL 模式,顺序如下:1。 ^ pnasser/ 2 ^管理员/
当前的URL,不符合任何这些。
编辑 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
这个作品。我假设我与apache的整合使用mod_wsgi是一个问题。但是,我不确定问题出在哪里
的问题似乎是在django.wsgi文件 - 和标准django.wsgi文件如何加载蟒蛇网站VS开发服务器如何加载该网站的差异。我想这是一个众所周知的问题,我不知道。感谢大家的建议。
替代django.wsgi文件在这里找到:http://blog.dscpl.com.au/2010/03/improved-wsgi-script-for-use-with.html
Using the URLconf defined in mysite.urls, Django tried these
URL patterns, in this order:
此错误消息应列出所有可能的URL,包括pnasser应用程序中的“扩展”URL。由于您只能从主要的urls.py获取网址,因此建议您没有在settings.py的INSTALLED_APPS
中正确启用pnasser
应用。
它似乎在那里 - 除非我在这里做错了什么。我已经编辑了我的问题以包含Installed_apps变量 – Prescott
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')),
)
也许你在第一线
错过“包括:”问题是,您使用的是空的正则表达式("^"
将匹配任何东西,包括一个空的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)),
)
所以,你必须:
- mysite.com => pnasser.views.index
- mysite.com/ => pnasser.views.index
- mysite.com/admin =>管理页面
- mysite.com/pnasser/ => pnasser.views.index
- mysite。COM/pnasser /家=> pnasser.views.home
如果这不起作用,请确保您已安装Django's CommonMiddleware,让你有APPEND_SLASH = True
(它是默认的,所以你不应该需要如果你没有在你的settings.py文件中找到它,就要弄乱它)。
在您的URL文件中,您可以编写如下所示的内容。 + =显然允许我们为'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')),)
)
对我来说,以下工作:
如果您的网址无法正常工作,您可能需要这一行 添加到位置/:
fastcgi_split_path_info ^()(.*)$;
是否存在pnasser的urls.py中引用的所有视图?我似乎记得#django中的某个人遇到了问题... – eternicode
存在所有视图 – Prescott
我刚刚在应用中执行了相同的确切url方案。我唯一的区别是我没有'r',只是'(“^”,include(“app.urls”)),'试试?应该修复lullis提到的斜线问题。 ([前缀在SO解释](http://stackoverflow.com/questions/2241600/python-regex-r-prefix)) –