暂无描述

andreiat 50094ef676 Добавил readme 5 年之前
config_project 085ca57850 Initial commit 5 年之前
mainapp 085ca57850 Initial commit 5 年之前
static 085ca57850 Initial commit 5 年之前
templates 085ca57850 Initial commit 5 年之前
.gitignore 085ca57850 Initial commit 5 年之前
manage.py 085ca57850 Initial commit 5 年之前
readme.md 50094ef676 Добавил readme 5 年之前
requirements.txt 085ca57850 Initial commit 5 年之前

readme.md

Шаблон для начала работы со связкой Django - Postgresql - Postgis

Ориентирован и настроен под 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 Дальше будет видно... .