我正在试验Django,并弄清楚如何设置urls.py,以及URL是如何工作的. 我已经在项目根目录中配置了urls.py,以定向到我的博客和管理员. 但是现在我想在我的主页上加一页,所以在localhost:8000页.

因此,我在项目根目录的urls.py中添加了以下代码:

from django.views.generic.simple import direct_to_template

urlpatterns = patterns('',
    (r"^$", direct_to_template, {"template": "base.html"}),
)

问题是它在blog/templates/...中搜索模板 而不是我根目录中的Templates文件夹.其中包含base.html.

满分urls.py:

from django.conf.urls import patterns, include, url
from django.views.generic.simple import direct_to_template

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()


urlpatterns = patterns('',
    (r"^$", direct_to_template, {"template": "base.html"}),
    url(r'^blog/', include('hellodjango.blog.urls')),
    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
    url(r'^admin/', include(admin.site.urls)),
    (r'^tinymce/', include('tinymce.urls')),
)

我是不是忽略了什么?

推荐答案

你在settings.py中设定了TEMPLATE_DIRS吗?判断并确保绝对路径设置正确.以下是我如何确保正确设置的:

settings.py

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))

TEMPLATE_DIRS = (
    # 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.
    os.path.join(PROJECT_ROOT, 'templates').replace('\\','/'),
)

# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
#     'django.template.loaders.eggs.Loader',
)

这样,我的项目根目录中有一个用于非应用程序模板的templates文件夹,每个应用程序本身都有一个templates/appname文件夹.

如果要使用根模板文件夹中的模板,只需指定模板名称,如'base.html';如果要使用应用程序模板,则使用'appname/base.html'

文件夹 struct :

project/
  appname/
    templates/ 
      appname/  <-- another folder with app name so 'appname/base.html' is from here
        base.html
    views.py
    ...

  templates/    <-- root template folder so 'base.html' is from here
    base.html

  settings.py
  views.py
  ...

Django相关问答推荐

查询在对象中使用django查询与一个包含句子

Django Model邮箱字段是必需的,即使在我将其设置为NULL=True和BLACK=True之后也是如此

我找不到为什么我的DRF登录测试没有按预期工作

Django中的判断约束

如何将Django项目连接到容器化的PostgreSQL数据库?

Django中每个类型/代理的最新行

Django-admin 显示decorator 按多列排序

Django基于查询集动态筛选字段名称

Django prefetch_related 与 3 个不直接相关的模型

如何将 select_related 应用于 Django 中的 m2m 关系的对象?

Django获取具有值的相关对象的计数并将其添加到注释中

如何从不是 django 元素文件夹的文件夹中运行 gunicorn

使用移动应用程序保护通信 [真实性、隐私和完整性]?

Django - 强制执行 ManyToManyField 唯一项

断开模型的信号并在 django 中重新连接

无法通过 pip 安装 Django 2.0

AngularJS + Django Rest Framework + CORS(CSRF Coo​​kie 没有出现在客户端)

Django 应用程序中的版本号

如何在该元素中的所有应用程序之间共享元素范围的模板标签

何时使用 Django get_absolute_url() 方法?