大家好,我的django应用程序网址无效 下面是我的项目urls.py
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('recipe.urls', namespace="recipe")),
)
这是我的app 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"),
)
我无法获取索引页面和其他网址,除了管理员工作正常。请帮帮我
答案 0 :(得分:0)
在settings.py
中,查找并修改此内容 -
TEMPLATE_DIRS = (
os.path.join(os.path.abspath(os.path.dirname(__file__)), "templates"),
)
答案 1 :(得分: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.html
和index.html
。现在为了简单起见,您可以在PROJECT_PATH
中定义settings.py
,它将存储项目路径的绝对路径,以便您可以轻松地将项目移动到其他位置。我认为这是您的问题所在。在Django&gt; = 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