1

嗨,伙计们,我的 django 应用程序 url 不起作用下面是我的项目 urls.py

     urlpatterns = patterns('',

           url(r'^admin/', include(admin.site.urls)),
            url(r'^', include('recipe.urls', namespace="recipe")),

    )

这是我的应用程序 urls.py

from django.conf.urls import patterns,url


urlpatterns = patterns('recipe.views',

    url(r'^$', 'index', name='index'),
    url(r'^create/recipe/$', 'create_recipe', name='create_recipe'),
    url(r'^create/ingredients/(?P<recipe_id>\d+)/$', 'create_ingredients', 
    name="create_ingredients"),
    url(r'^create/steps/(?P<recipe_id>\d+)/$', 'create_steps', 
    name="create_steps"),
     url(r'^view/recipe/(?P<recipe_id>\d+)/$', 'view_recipe', 
    name="view_recipe"),
)

除了管理员工作正常之外,我无法获取索引页面和其他 url。请帮我

4

2 回答 2

0

在你的settings.py,找到并编辑这个 -

TEMPLATE_DIRS = (
    os.path.join(os.path.abspath(os.path.dirname(__file__)), "templates"),
)
于 2013-02-17T18:47:11.650 回答
0

从问题评论看来,您在使用 Django 模板而不是 urlconfig 时遇到问题。这是 Django 模板的工作原理。在您settings.py定义的变量TEMPLATES_DIRS中,您指定 Django 将在其中查找模板的所有目录的元组。

假设您有以下内容TEMPLATES_DIRS

TEMPLATES_DIRS = (
    '/absolute/path/to/foo',
    '/absolute/path/to/bar',
)

然后,如果您查找模板base.html,Django 将在以下位置查找它,如果找到,将使用第一个位置:

/absolute/path/to/foo/base.html
/absolute/path/to/bar/base.html

在您的情况下,您提到您将模板存储在 Django 的项目文件夹和应用程序的文件夹中。在这种情况下,您必须确保两个文件夹的定义TEMPLATES_DIRS如下:

TEMPLATES_DIRS = (
    '/absolute/path/to/project/templates',
    '/absolute/path/to/app/templates',
)

然后在您的情况下,Django 将能够同时找到base.htmlindex.html。现在为了让事情变得更简单,您可以PROJECT_PATHsettings.py其中定义将存储项目路径的绝对路径,以便您可以轻松地将项目移动到不同的位置。我认为这可能是您的问题所在。在 Django >= 1.4 中,您具有以下项目结构:

/project         <= this should be your PROJECT_PATH
  /project       <= instead of this
    templates/
      base.html
    settings.py
  /recipe
    templates/
      index.html
    models.py

考虑到这一点,尝试使用这样的东西:

PROJECT_PATH = os.path.abspath(os.path.join(__file__, '..', '..'))
PROJECT_NAME = os.path.basename(PROJECT_PATH)

TEMPLATES_DIRS = (
    os.path.join(PROJECT_PATH, PROJECT_NAME, 'templates'),
    os.path.join(PROJECT_PATH, 'recipe', 'templates')
)

在上面的 PROJECT_PATH 中计算了项目的绝对路径。假设您settings.py位于/some/path/project/project/settings.py。然后按如下方式计算项目路径:

>>> # settings.py

>>> print __file__
/some/path/project/project/settings.py
>>> print os.path.join(__file__, '..', '..')
/some/path/project/project/settings.py/../../
>>> # now abspath normalizes the path two levels up
>>> print os.path.abspath(os.path.join(__file__, '..', '..'))
/some/path/project

>>> # now you figure out the project name so that you can get the project templates folder
>>> print os.path.basename(os.path.abspath(os.path.join(__file__, '..', '..')))
project

>>> print os.path.join(PROJECT_PATH, PROJECT_NAME, 'templates')
/some/path/project/project/templates
>>> print os.path.join(PROJECT_PATH, 'recipe', 'templates')
/some/path/project/recipe/templates
于 2013-02-17T18:48:07.093 回答