Ответ 1
Есть много ответов, которые работают со старыми версиями Django, но Django постоянно обновляется, и в моих исследованиях я не нашел жизнеспособного ответа для Django 1.8/1.9, поэтому мне пришлось сворачивать самостоятельно. Вот как вы это делаете:
Структура проекта:
├── data
│ ├── __init__.py
│ ├── migrations
│ │ └── __init__.py
│ └── models.py
├── main.py
├── manage.py
└── settings.py
Каталог директорий data
и миграций содержит пустые __init__.py
файлы. Образец файла models.py
читается следующим образом:
from django.db import models
class User(models.Model):
name = models.CharField(max_length=255)
email = models.EmailField(max_length=255)
Файл manage.py
является типичным файлом Django manage.py
. Просто не забудьте изменить параметр параметров в os.environ.setdefault
, если вы скопируете его из новой команды django-admin startproject
:
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
Для файла settings.py
требуются 3 настройки: БАЗЫ ДАННЫХ, INSTALLED_APPS и SECRET_KEY. Обратитесь к документам Django для DB, которые не являются SQLite:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'sqlite.db',
}
}
INSTALLED_APPS = (
'data',
)
SECRET_KEY = 'REPLACE_ME'
Реальный трюк находится в main.py
, который будет содержать код для ваших моделей. По-видимому, вам нужно использовать wsgi
для работы с этими двумя строками:
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Здесь пример main.py:
# Django specific settings
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
### Have to do this for it to work in 1.9.x!
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
#############
# Your application specific imports
from data.models import *
#Add user
user = User(name="someone", email="[email protected]")
user.save()
# Application logic
first_user = User.objects.all()[0]
print(first_user.name)
print(first_user.email)
Этот проект вместе с этим сообщением были полезными отправными точками для меня, чтобы найти ответ, и мой pull-запрос с рабочим кодом для Django 1.9 был объединен, поэтому теперь вы можете захватить код из masnun repo. Если вы знаете лучший способ, отправьте запрос на растяжение.