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是一个问题。但是,我不确定问题出在哪里

+0

是否存在pnasser的urls.py中引用的所有视图?我似乎记得#django中的某个人遇到了问题... – eternicode

+0

存在所有视图 – Prescott

+1

我刚刚在应用中执行了相同的确切url方案。我唯一的区别是我没有'r',只是'(“^”,include(“app.urls”)),'试试?应该修复lullis提到的斜线问题。 ([前缀在SO解释](http://stackoverflow.com/questions/2241600/python-regex-r-prefix)) –

的问题似乎是在django.wsgi文件 - 和标准django.wsgi文件如何加载蟒蛇网站VS开发服务器如何加载该网站的差异。我想这是一个众所周知的问题,我不知道。感谢大家的建议。

替代django.wsgi文件在这里找到:http://blog.dscpl.com.au/2010/03/improved-wsgi-script-for-use-with.html

+0

现在它是否工作?如果没有,请尝试停止然后启动您的apache服务器。使用重新启动命令时,我的网址和设置都没有马上更新。但停下来似乎有所帮助。 –

+0

对不起,不得不等待一天才能回答。我确实必须启动并重新启动 – Prescott

+0

如何为未来用户提供类似问题的链接? – beerbajay

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应用。

+0

它似乎在那里 - 除非我在这里做错了什么。我已经编辑了我的问题以包含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 ^()(.*)$; 

来源:https://code.djangoproject.com/wiki/DjangoAndNginx