andreiat 50094ef676 Добавил readme | 5 years ago | |
---|---|---|
config_project | 5 years ago | |
mainapp | 5 years ago | |
static | 5 years ago | |
templates | 5 years ago | |
.gitignore | 5 years ago | |
manage.py | 5 years ago | |
readme.md | 5 years ago | |
requirements.txt | 5 years ago |
Ориентирован и настроен под Geodjango в Linux (Ubuntu18)
Скачиваем файлы через git, либо zip архивом и перемещаем его в директорию, где создадим рабочий проект
$ https://github.com/Andreiat/django-template2/archive/master.zip
$ mv django-template2-master.zip /home/usre/Projects
$ cd /home/user/Projects
Разархивируем файл в директории с проектом
$ unzip django-template2-master.zip
$ cd django-template2-master
Создаем виртуальное окружение, устанавливаем в него Python 3 (3.7)
$ virtualenv -p python3 envname
$ source envname/bin/activate
Устанавливаем батарейки из requirements.txt
$ pip install -r requirements.txt
Создаем любым доступным способом pgsql базу с расширением postgis Например так:
Заходим под админом базы данных postgres:
$ sudo su postgres
$ [sudo] пароль для user:************
postgres@desktop:/home/user/Projects/django-template2-master$
Создаем юзера в Postgresql
$ createuser gisuser
Создаем базу данных, к которой будем коннектиться из Django
$ createdb gistestdb
Подключаемся к базе утилитой psql
$ psql
Получаем приглашение и коннект из под пользователя postgres к базе postgres
postgres=#
Коннектимся к созданной базе данных
# \connect gistestdb;
Результат будет виден в терминале примерно так:
Вы подключены к базе данных "gistestdb" как пользователь "postgres".
gistestdb=#
И создаем расширения Postgis и т.д., подробнее здесь https://postgis.net/install/ . Может потребоваться установка Postgis в систему для конкретной ОС!!!
# CREATE EXTENSION postgis;
# CREATE EXTENSION postgis_topology;
# CREATE EXTENSION pgrouting;
Даем юзеру пароль на вход в базу
# alter user gisuser with encrypted password 'development';
Даем все права на созданную базу данных gistestdb:
# grant all privileges on database gistestdb to gisuser;
Выходим из коннекта с базой, уходим из под юзера postgres
# \q
$ exit
Корректируем настройки соединения с базой:
vim config_project/settings.py
Регистрируем подключение к ней в setting.py
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis', # ГИС
'NAME': 'gistestdb',
'USER': 'gisuser',
'PASSWORD': 'development',
'HOST': '127.0.0.1',
'PORT': '5432',
}
}
Создаем миграции, суперюзера и пускаем сервер
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver
В проекте создана расширяемая пользовательская модель юзера (AdvUser). Регистрация пользователей не автоматическая, а подразумевает получение галки 'is-active' в админпанели. Если нужно без этой опции, то в файле mainapp.views.py в функции
def user_activate(request, sign):
"""Функция, обрабатывающая полученное подтверждение активации юзера на сайте"""
try:
username = signer.unsign(sign)
except BadSignature:
# Подпись не соответствует!!!
return render(request, 'mainapp/bad_signature.html')
user = get_object_or_404(AdvUser, username=username)
if user.is_activated:
# Пользователь с таким именем был активирован ранее
template = 'mainapp/user_is_activated.html'
else:
# Пользователь с таким именем успешно активирован
template = 'mainapp/activation_done.html'
# И всёже оставим за админом право окончательно активировать пользователя
user.is_active = False
# Пользователь прошел регистрацию и подтвердил адрес электронной почты
user.is_activated = True
user.save()
return render(request, template)
!!! user.is_active поменять на True !!!
Прописаны основные view и шаблоны для аутентификации и авторизации. Рыба короче. Кроме того предустановлены django-debug-toolbar и django-extensions Дальше будет видно... .