在django中自动加载模板对我的应用程序不起作用

时间:2013-02-05 06:49:39

标签: python django

根据documentation,如果我在应用程序的根目录中有一个名为“templates”的文件夹,django应该自动从我的应用程序加载模板。

我添加了我的应用

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',
    # Use email as username https://github.com/dabapps/django-email-as-username
     'emailusernames',
     'purchaseapp' # this is my app
)

我已经创建了一个模板文件夹

enter image description here

我设置了urlpatterns以使用admin作为登录页面

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'timely.views.home', name='home'),
    # url(r'^timely/', include('timely.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', hello),
    url(r'^accounts/logout/$', 'django.contrib.auth.views.logout'),
    url(r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'admin/login.html'}),
    url(r'^accounts/$', 'django.views.generic.simple.redirect_to', {'url': '/'}),
    url(r'^accounts/profile/$', 'django.views.generic.simple.redirect_to', {'url': '/'}),
)

我覆盖了base_site.html,但我看不到我的自定义,我看到它是否将文件夹添加到TEMPLATE_DIRS

TEMPLATE_DIRS = (
    "/Users/nicola/Documents/Aptana Studio 3 Workspace/timely/purchaseapp/templates",
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)

我做错了什么?

2 个答案:

答案 0 :(得分:0)

您需要在管理员(来自docs)下创建更多目录:

  

要覆盖其中一个或多个,请先创建一个管理员   项目模板目录中的目录。这可以是任何一个   您在TEMPLATE_DIRS中指定的目录。

     

在此管理目录中,创建以您的名字命名的子目录   应用程序。在这些app子目录中创建名为的子目录   在您的模型之后。请注意,管理员应用程序将小写模型   查找目录时的名称,因此请确保将其命名为   如果要在a上运行应用程序,则全部小写的目录   区分大小写的文件系统。

     

要覆盖特定应用的管理模板,请复制并编辑   来自django / contrib / admin / templates / admin目录的模板,以及   将其保存到您刚创建的目录之一。

答案 1 :(得分:0)

问题是django可能会在找到有效模板时停止搜索,所以我的应用程序必须先来自contrib admin

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    # 'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'purchaseapp', #this is my app
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    'django.contrib.admindocs',
    # Use email as username https://github.com/dabapps/django-email-as-username
     'emailusernames',
)