2013-02-17 2 views
1

Привет, ребята мои Джанго приложение ссылки не работают ниже мой проект urls.pyДжанго URL не работает, кроме администратора

 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-адреса, кроме того, что администратор работает нормально. Пожалуйста, помогите мне

+0

какая ошибка отображается? Говорит ли он, что представления не существует? –

+0

если я говорю http: // localhost: 8000/ am get templatedoesnt существует base.html – nyfer

+0

Это не бизнес компании urls.py. – iMom0

ответ

0

От вопроса комментарии, кажется, у вас возникли проблемы с шаблонами Джанго вместо urlconfig. Вот как работают шаблоны Django. В вашем вы определяете переменную 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> = 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 
+0

hey miki благодарит много, что это сработало :) Кстати, можете ли вы объяснить, что эти два утверждения делают PROJECT_PATH = os.path.abspath (os.path.join (__ file__,' .. ',' .. ')) PROJECT_NAME = os.path.basename (PROJECT_PATH) – nyfer

+0

изменен ответ – miki725

0

В вашем settings.py, найти и изменить это -

TEMPLATE_DIRS = (
    os.path.join(os.path.abspath(os.path.dirname(__file__)), "templates"), 
) 
Смежные вопросы