2013-10-02 33 views
4

我有一些基于类的视图和reverse_lazy奇怪的问题。Django:包含的urlconf core.urls中没有任何模式

ImproperlyConfigured at /dashboard/student/ 
The included urlconf core.urls doesn't have any patterns in it 

我views.py:

class DashStudentMain(TemplateView): 
    model_class = None 
    template_name = 'learn/dashboard/snip_student_1.html' 
    tab_list = { 
     ("Main", reverse_lazy('dash_student_main_url')), 
     #("History", reverse_lazy('dash_student_main_url')) 
    } 
    active_tab = "Main" 

我core.urls:

from django.conf.urls.defaults import patterns, include, url 
from django.contrib import admin 
from django.views.generic import RedirectView 
from django.conf import settings 

admin.autodiscover() 

urlpatterns = patterns(
    '', 
    url(r'^$', 'core.views.home', name='home_url'), 
    url(r'^home', 'core.views.home'), 
    url(r'^dashboard/', include('tc_learn.dashboard.urls')), 
    ... 
) 

我tc_learn.dashboard.urls调用网站时,

跟随误差显示出来:

from django.conf.urls.defaults import patterns, url 
from .views import DashStudentMain, DashStudentHistory 

urlpatterns = patterns(
    # Student + Tabs 
    url(r"^", DashStudentMain.as_view()), 
    url(r"^student/$", DashStudentMain.as_view(), name="dash_student_main_url"), 
    url(r"^student/history/$", DashStudentHistory.as_view(), name="dash_student_history_url"), 

我已经

  • 重新启动服务器,以确保网址进行了适当
  • 加载注释掉( “主”,reverse_lazy( 'dash_student_main_url')),以确保该urls.py语法是罚款
  • 删除线URL(R “^”,DashStudentMain.as_view()),因为它不是还是使用,但是没有它/仪表板/学生没有在所有的工作..

有什么想法我可能会错过?谢谢!

编辑: 看起来问题来自tab_list对象。 当我通过tab_list = reverse_lazy('dash_student_main_url')直接分配对象时,代码工作正常。当我在列表中使用它时,它显示错误。有没有人知道这种情况下的解决办法?

+0

在'INSTALLED_APPS'的设置中,确保'tc_learn'是_before_'core' – karthikr

+0

刚刚尝试过,但错误依然存在:/ –

+0

当它试图从尚未加载的模块访问URL时,通常会发生此错误。所以,你可能想要解决'INSTALLED_APPS' – karthikr

回答

9

更改此代码:

tab_list = { 
    ("Main", reverse_lazy('dash_student_main_url')), 
    #("History", reverse_lazy('dash_student_main_url')) 
} 

到:

tab_list = [ 
    ("Main", reverse_lazy('dash_student_main_url')), 
    #("History", reverse_lazy('dash_student_main_url')) 
] 

相反,你给变量的名称,你没有创建一个列表,但一个set。元素在创建集合时立即进行评估,因为集合需要更多地了解它们包含的值。按照预期,将它更改为适当的列表将允许对元素进行懒惰评估。

+0

太棒了,这个伎俩!非常感谢 –

2

在tc_learn.dashboard.urls中:您缺少第一个参数(在您的情况下为空前缀)。将其更改为:

urlpatterns = patterns(
    '', 
    url(r"^", DashStudentMain.as_view()), 
    url(r"^student/$", DashStudentMain.as_view(), name="dash_student_main_url"), 
    url(r"^student/history/$", DashStudentHistory.as_view(), name="dash_student_history_url"), 
) 

此外,第一正则表达式应该是R“^ $”,如果你想它代表一个空 ,看看它是否工作。让我知道!

+0

太快了!我只是改变了这些线路,并重新启动服务器,也没有运气。 –

+0

在您的设置文件中,ROOT_URLCONF指向什么? – Alvaro

+0

ROOT_URLCONF ='core.urls'。因为当我注释掉“reverse_lazy”时一切正常,我不确定这是否是配置问题 –