Выполняем команды мануала вслед за аторами. Отвлекаемся на %PYTHONPATH% (sys.path). Создаем первый сайт. Запускаем серврер... Но останавливаемся после создании базы данных для суперпользователя с паролем ... здесь есть напоминалки...
Зачем мне эти таблицы БД, если я еще не решил, чего хочу... Прежде, чем грызть Django, потратим пару дней на Pydoc и Sphinx (следующие посты)
Зачем мне эти таблицы БД, если я еще не решил, чего хочу... Прежде, чем грызть Django, потратим пару дней на Pydoc и Sphinx (следующие посты)
Почему я "отвлекаюсь" на изучение Django? Логичее было бы "добить" тему с пауками, потом запустить пару-тройку бот-проектов..., а потом уже разбираться с этим движком.
То, что движет мною можно назвать страстью... и я нахожу "оправдания" своему любопытстсву:
1. Scrapy использует структуру папок и идеологию, и команды для создания проекта - все это позаимствовано в Django/ 2. Мне очень скоро понадобится "продакшен" сайт..., но я не хочу ограничиваться только блогом... хорошо бы "изобрести" гибрид блога, wiki, bugtracker, projectplanner..., crowd sourcing... 3. Нужна идея сайта, использующего скомпилированный контент с других сайтов... как работает связка django+scrapy? 4. Нужно научится планироать и выполнять "второстепенные" работы (раз, или два раза в неделю). 5. По утрам лучше учится, поскольку мозг еще не проснулся.
То, что движет мною можно назвать страстью... и я нахожу "оправдания" своему любопытстсву:
1. Scrapy использует структуру папок и идеологию, и команды для создания проекта - все это позаимствовано в Django/ 2. Мне очень скоро понадобится "продакшен" сайт..., но я не хочу ограничиваться только блогом... хорошо бы "изобрести" гибрид блога, wiki, bugtracker, projectplanner..., crowd sourcing... 3. Нужна идея сайта, использующего скомпилированный контент с других сайтов... как работает связка django+scrapy? 4. Нужно научится планироать и выполнять "второстепенные" работы (раз, или два раза в неделю). 5. По утрам лучше учится, поскольку мозг еще не проснулся.
Создаём своё первое приложение с Django, часть
Быстрое руководство по установке
django-admin.py and manage.py
How to add to the pythonpath in windows 7?
Быстрое руководство по установке
django-admin.py and manage.py
How to add to the pythonpath in windows 7?
Проверяем версию Django и повторяев вслед за автором руководства¶
In [1]:
!python -c "import django; print(django.get_version())"
Последующая попытка создать проект (по инструкции) "Используя командную строку, перейдите в каталог, где вы хотите хранить код, и выполните следующую команду:" окончилась ошибкой, наверное пути не прописаны, посмотрим руководство по установке
In []:
C:\Users\kiss\Anaconda>cd C:\Users\kiss\Documents\Python-Django
C:\Users\kiss\Documents\Python-Django>import
"django-admin.py" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
C:\Users\kiss\Documents\Python-Django>
"Быстрое руководство по установке" игнорирует тему путей, потому мы просто пропишем полный путь к файлу
In []:
C:\Users\kiss\Documents\Python-Django>C:\Users\kiss\Anaconda\Lib\site-packages\django\bin\django-admin.py startproject mysite_a
Usage: django-admin.py subcommand [options] [args]
Options:
-v VERBOSITY, --verbosity=VERBOSITY
Verbosity level; 0=minimal output, 1=normal output,
2=verbose output, 3=very verbose output
--settings=SETTINGS The Python path to a settings module, e.g.
"myproject.settings.main". If this isn't provided, the
DJANGO_SETTINGS_MODULE environment variable will be
used.
--pythonpath=PYTHONPATH
A directory to add to the Python path, e.g.
"/home/djangoprojects/myproject".
--traceback Raise on exception
--version show program's version number and exit
-h, --help show this help message and exit
Type 'django-admin.py help <subcommand>' for help on a specific subcommand.
Available subcommands:
[django]
check
cleanup
compilemessages
createcachetable
dbshell
diffsettings
dumpdata
flush
inspectdb
loaddata
makemessages
runfcgi
runserver
shell
sql
sqlall
sqlclear
sqlcustom
sqldropindexes
sqlflush
sqlindexes
sqlinitialdata
sqlsequencereset
startapp
startproject
syncdb
test
testserver
validate
C:\Users\kiss\Documents\Python-Django>
Но так файл "виден", но выполняется с ошибкой...? Очевидно, что "внутри файла" команды, которые не видны системе, поскольку "в путях" не прописаны... Если погуглить, то найдется хорошее объяснение django-admin.py and manage.py, ниже курсивом выдержки оттуда:
The django-admin.py script should be on your system path if you installed Django via its setup.py utility. If it’s not on your path, you can find it in site-packages/django/bin within your Python installation. Consider symlinking it from some place on your path, such as /usr/local/bin.
For Windows users, who do not have symlinking functionality available, you can copy django-admin.py to a location on your existing path or edit the PATH settings (under Settings - Control Panel - System - Advanced - Environment...) to point to its installed location.
Я уже писал об этом... вроде бы при установке IPython, после этого можно посмореть переменные окружения для IPython и сделать то же самое для Django... Но есть еще какая-то переменная окружения PYTHONPATH (она е константа в коде скриптов Python). У меня нет четкого понимания, зачем она и что с ней делать...
Здесь мне пришлось отвлечься от темы, чтобы разобраться с переменными окружения. В результате я опубликовал длиннющий пост с описанием команд и мануалами. Но оказалось, что есть чудодейственное простое средство установки переменной PYTHONPATH
How to add to the pythonpath in windows 7?. Попробуем ее создать и дописать в нее второй путь:
How to add to the pythonpath in windows 7?. Попробуем ее создать и дописать в нее второй путь:
In []:
C:\Users\kiss\Documents\Python-Django>echo %pythonpath%
%pythonpath%
C:\Users\kiss\Documents\Python-Django>set PYTHONPATH=%PYTHONPATH%;C:\Users\kiss\Documents\Python-Django
C:\Users\kiss\Documents\Python-Django>echo %pythonpath%
%PYTHONPATH%;C:\Users\kiss\Documents\Python-Django
In []:
C:\Users\kiss\Documents\Python-Django>set PYTHONPATH=%PYTHONPATH%;C:\Users\kiss\Anaconda\Lib\site-packages\django\bin
C:\Users\kiss\Documents\Python-Django>echo %PYTHONPATH%
%PYTHONPATH%;C:\Users\kiss\Documents\Python-Django;C:\Users\kiss\Anaconda\Lib\site-packages\django\bin
Теперь повторим команду
In [1]:
import sys
In [2]:
sys.path
Out[2]:
Но оказывается, что несмотря на 'C:\Users\kiss\Anaconda\Lib\site-packages\django\bin' то, что путь прописан в переменной, команда не работает, вернее, работает только в том случае, если прописать полный путь к файлу:
In []:
C:\Users\kiss\Documents\Python_Django>python django-admin.py startproject mysite_1
python: can't open file 'django-admin.py': [Errno 2] No such file or directory
In []:
C:\Users\kiss\Documents\Python_Django>python C:\Users\kiss\Anaconda\Lib\site-packages\django\bin\django-admin.py startproject mysite_1
Действительно, наконец-то в C:Django создана соответствующая папка mysite1
Наверное, дело в том, что windows ничего не знает о PYTHONPATH и знать не хочет. Эту переменную ищет Python.
Наверное, дело в том, что windows ничего не знает о PYTHONPATH и знать не хочет. Эту переменную ищет Python.
Чтобы Windows считал пути, надо еспользовать константу PATH. Нужно будет при случае это проверить. Хотя в обсуждении на stackoverflow об этом упоминается (ссылка в начале поста).
В руководстве по установке есть соответствующая ссылка Трудности с запуском django-admin.py
Структура папок проекта¶
In []:
mysite_1/
manage.py
mysite_1/
__init__.py
settings.py
urls.py
wsgi.py
Проверяем, есть пустой init.py
In [6]:
!chcp 65001
!dir C:\Users\kiss\Documents\Python_Django\mysite_1\mysite_1
Распечатаем все файлы¶
In [10]:
%load C:\\Users\\kiss\\Document s\\Python_Django\\mysite_1\\manage.py
In []:
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite_1.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
In [7]:
%load C:\\Users\\kiss\\Documents\\Python_Django\\mysite_1\\mysite_1\\settings.py
In []:
"""
Django settings for mysite_1 project.
For more information on this file, see
https://docs.djangoproject.com/en/1.6/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.6/ref/settings/
"""
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '2r+9ve4o4$1kg%88bcg#4@1_49&hku(k15+1))mu=e9%*&rmi3'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
TEMPLATE_DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
ROOT_URLCONF = 'mysite_1.urls'
WSGI_APPLICATION = 'mysite_1.wsgi.application'
# Database
# https://docs.djangoproject.com/en/1.6/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# Internationalization
# https://docs.djangoproject.com/en/1.6/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/
STATIC_URL = '/static/'
In [8]:
%load C:\\Users\\kiss\\Documents\\Python_Django\\mysite_1\\mysite_1\\urls.py
In []:
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'mysite_1.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
)
In [9]:
%load C:\\Users\\kiss\\Documents\\Python_Django\\mysite_1\\mysite_1\\wsgi.py
In []:
"""
WSGI config for mysite_1 project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/
"""
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite_1.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Внешний каталог mysite/ – это просто контейнер для вашего проекта. Его название никак не используется Django, и вы можете переименовать его во что угодно.
manage.py: Скрипт, который позволяет вам взаимодействовать с проектом Django. Подробности о manage.py читайте в разделе django-admin.py and manage.py.
Внутренний каталог mysite/ - это пакет Python вашего проекта. Его название – это название пакета Python, которое вы будете использовать для импорта чего-либо из проекта (например, mysite.urls).
mysite/init.py: Пустой файл, который указывает Python, что текущий каталог является пакетом Python. (Читайте о пакетах в официальной документации Python, если вы новичок в Python.)
mysite/settings.py: Настройки/конфигурация проекта. Раздел Django settings расскажет вам все о настройках проекта.
mysite/urls.py: Конфигурация URL-ов для вашего проекта Django. Это “содержание” всех Django-сайтов. Вы можете прочитать о конфигурации URL-ов в разделе Менеджер URL-ов.
mysite/wsgi.py: Точка входа вашего проекта для WSGI-совместимых веб-серверов. Подробности читайте в разделе Развёртывание с WSGI.
manage.py: Скрипт, который позволяет вам взаимодействовать с проектом Django. Подробности о manage.py читайте в разделе django-admin.py and manage.py.
Внутренний каталог mysite/ - это пакет Python вашего проекта. Его название – это название пакета Python, которое вы будете использовать для импорта чего-либо из проекта (например, mysite.urls).
mysite/init.py: Пустой файл, который указывает Python, что текущий каталог является пакетом Python. (Читайте о пакетах в официальной документации Python, если вы новичок в Python.)
mysite/settings.py: Настройки/конфигурация проекта. Раздел Django settings расскажет вам все о настройках проекта.
mysite/urls.py: Конфигурация URL-ов для вашего проекта Django. Это “содержание” всех Django-сайтов. Вы можете прочитать о конфигурации URL-ов в разделе Менеджер URL-ов.
mysite/wsgi.py: Точка входа вашего проекта для WSGI-совместимых веб-серверов. Подробности читайте в разделе Развёртывание с WSGI.
In []:
Давайте проверим, что все заработало. Перейдите во внешний каталог mysite, если вы этого еще не сделали, и выполните команду python manage.py runserver
In []:
C:\Users\kiss\Documents\Python_Django\mysite_1>python manage.py runserver
Validating models...
0 errors found
April 29, 2014 - 22:19:37
Django version 1.6, using settings 'mysite_1.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
It worked! Congratulations on your first Django-powered page.
Of course, you haven't actually done any work yet. Next, start your first app by running python manage.py startapp [appname].
You're seeing this message because you have DEBUG = True in your Django settings file and you haven't configured any URLs. Get to work!
Of course, you haven't actually done any work yet. Next, start your first app by running python manage.py startapp [appname].
You're seeing this message because you have DEBUG = True in your Django settings file and you haven't configured any URLs. Get to work!
Следует заметить: НИКОГДА НЕ используйте этот сервер на “живом” сайте. Он создан исключительно для разработки. (Мы умеем делать Web-фреймверки, не Web-сервера.)
Если вы хотите изменить IP, передайте его вместе со значением порта. Чтобы слушать все публичные IP (полезно, если вы хотите показать свою работу на других компьютерах), используйте:
In []:
python manage.py runserver 0.0.0.0:8000
Смотрите полное описание команды runserver
Настройка базы данных¶
Теперь отредактируйте mysite/settings.py. Это просто Python модуль с переменными, которые являются значениями настроек Django. Если вы хотите использовать другую базу данных, установите необходимые библиотеки и измените настройки подключения к базе данных в DATABASES 'default'
По умолчанию используется SQLite. Это хороший вариант, если вы новичок в базах данных, или хотите попробовать Djagno. SQLite включен в Python, так что вам не нужно устанавливать что либо еще.
Команда syncdb анализирует значение INSTALLED_APPS и создает все необходимые таблицы в базе данных, используя настройки базы данных из файла mysite/settings.py. Вы увидите сообщение о создании таблиц и предложение создать суперпользователя. Воспользуйтесь этим предложением.
In []:
C:\Users\kiss\Documents\Python_Django\mysite_1>python manage.py syncdb
Creating tables ...
Creating table django_admin_log
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): Y
Please enter either "yes" or "no": yes
Username (leave blank to use 'kiss'):
Email address: altersego2007@gmail.com
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
C:\Users\kiss\Documents\Python_Django\mysite_1>
Между делом создал суперюзера с именем kiss и паролем g...
Посты чуть ниже также могут вас заинтересовать
Комментариев нет:
Отправить комментарий