Джанго привет мир не показывает - PullRequest
1 голос
/ 24 марта 2012

Я следую инструкции для django , я размещаю свой проект на бесплатном хостинге для тестирования,

хостинг работает нормально с python, а оболочка django, например,

, но я не могу увидеть правильные данные в моем index.html или получить доступ к / admin

так что я думаю, это проблема с неправильным путем?,

поэтому, пожалуйста, совет по этому вопросу noob,

это папка, в которой хранятся мои файлы /home/mako34/www/blog

вот мой код:

Я полагаю, что параметры правильно настроены для БД, так как она создает базу данных sqlite и необходимые папки

settings.py

import os
*
* configure connection do db, etc
*

ROOT_URLCONF = 'blog.urls'

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(os.path.dirname(__file__),'templates'), # creates a absolute path
)

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
)

urls.py

from django.conf.urls.defaults import patterns, include, url

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

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

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
    (r'^, 'blog.views.index'), #<------------------- index/root entry
    # Uncomment the next line to enable the admin:
     url(r'^admin/', include(admin.site.urls)),


)

index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>My Blog</title>
    </head>

<body>
    <H1>Test Django</H1>
    <div id="content">
    {% block content %}
    {% endblock %}
    </div>
</body>

</html> 

Так чего же мне не хватает?

, чтобы я мог видеть свой HTML-индекс с данными [как теперь он показывает теги {% block content %} {% endblock %} и без данных в них

и не может иметь доступ к http://mako34.alwaysdata.net/blog/admin/

спасибо!

1 Ответ

1 голос
/ 24 марта 2012

Ваши URL должны выглядеть следующим образом:

urlpatterns = patterns('',
     url(r'^admin/', include(admin.site.urls)),
     url(r'^', 'blog.views.index'),
)

Обратите внимание, что индексный URL, который вы хотите использовать, теперь заключен в вызов url().Кроме того, URL-адрес индекса теперь следует за URL-адресом администратора, поэтому URL-адреса, ссылающиеся на /admin, обрабатываются URL-адресом администратора, а не перехватывает все заданные вами URL-адреса index.

Обработчики URL-адресов работают при первом совпадении.Ваш url(r'^') соответствует ВСЕМУ, поэтому не дает возможности работать админке.Вам, вероятно, следует изменить его на url(r'^$'), который будет соответствовать URL-адресу «без пути», а не «каждому URL».Обратите внимание на добавление знака $, отмечающего конец шаблона.

Редактировать:

Хорошо, теперь я понимаю вашу проблему лучше.То, что вы пытаетесь сделать, - это развернуть приложение django по определенному пути к серверу, для которого требуется префикс в пути URL.

Обычно это стандартный URL:

http://www.example.com/
http://www.example.com/admin/
http://www.example.com/index/

Вместо этого вы пытаетесь сделать следующее:

http://www.example.com/myapp/
http://www.example.com/myapp/admin/
http://www.example.com/myapp/index/

Django обычно ожидает, что ваше приложение будет развернуто по корневому URL, без указания пути.Путь используется для определения того, какое внутреннее приложение django должно обработать запрос.

Существует два способа решения вашей проблемы.Во-первых, и то, что я бы посчитал правильным, это использовать каркас сайтов, как описано здесь .

Другой, это добавить префикс ко всем вашим URL в urlpatterns.вот так:

urlpatterns = patterns('',
     url(r'^blog/admin/', include(admin.site.urls)),
     url(r'^blog/$', 'blog.views.index'),
)

Но вам также нужно помнить, чтобы добавить префикс 'blog' к нескольким настройкам, которые ожидают URL-адреса, такие как LOGIN_REDIRECT и т. д. и т. д.

Что вы действительно должны делать,заставить django работать по адресу: mako34.alwaysdata.net и забыть / blog / в целом, но изменить apache, чтобы перенаправить все запросы к mod_wsgi.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...