Django
  • Введение
  • Установка
  • Создание проекта
  • Создание приложения
  • Администрирование
  • Создание страниц
  • Динамические страницы
  • Добавление стилей
  • Шаблоны
  • Вывод одной записи
  • AJAX
  • Взаимодействие с БД
  • Сборка на Python3
  • Формы POST запрос
  • Cookie файлы
  • Работа с пользователями
  • Связь в моделях
  • PostgreSQL + JSON
  • Отключение csrf
Powered by GitBook
On this page
  • PostgreSQL
  • JSON
  • Выборка данных

Was this helpful?

PostgreSQL + JSON

PostgreSQL

Открываю терминал и пишу:

sudo apt-get update
sudo apt-get install python3-pip python3-dev libpq-dev postgresql postgresql-contrib

В активированном виртуальном окружении в терминале пишу:

pip install django psycopg2

В файле settings.py заменяю информацию о базе данных на следующее содержимое:

import psycopg2

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'b123',
        'USER': 'postgres',
        'PASSWORD': '12345',
        'HOST': 'localhost',
        'PORT': '5432'
    }
}

В файле models.py создаю модель для хранения информации о людях:

from django.db import models
from django.utils import timezone

class PeopleModel(models.Model):
    man_name = models.TextField()
    man_sername = models.TextField()
    man_age = models.IntegerField()

    def __str__(self):
        return str(self.man_name) + "___" + str(self.man_sername)

Ссылка на репозиторий с рабочим проектом:

Ссылка на сайт, на котором я прочитал про взаимодействие с PostgreSQL:

JSON

Подключаю библиотеку.

import json

Создаю свой класс для хранения информации о человеке.

class man:
    def setValues(self, man_name, man_sername, man_age):
        self.man_name = man_name
        self.man_sername = man_sername
        self.man_age = man_age

Создаю вспомогательную функцию.

def jsonDefault(object):
    return object.__dict__

Реализация метода, который делает выборку из базы данных, переносит выбранные данные в массив, преобразует массив объектов в строку и отправляет полученную строку клиенту.

def get_people(request):
    print(request.get_full_path)
    v = int(request.GET['v'])
    my_records_arr = PeopleModel.objects.filter(man_age__gte=v).order_by('pk')

    answer_arr = []
    for element in my_records_arr:
        answer_arr.append(man())

    i = 0
    for element in my_records_arr:
        answer_arr[i].setValues(element.man_name, element.man_sername, element.man_age)
        print(str(i) + ")  " + element.man_name + "  " + element.man_sername + "  " + str(element.man_age))
        i = i + 1

    s = json.dumps(answer_arr, default=jsonDefault)
    return HttpResponse(str(s))

Выборка данных

Выбрать всех людей и упорядочить их по возрастанию id:

my_records_arr = PeopleModel.objects.order_by('pk')

Выбрать всех людей и упорядочить их по убыванию id:

my_records_arr = PeopleModel.objects.order_by('-pk')

Выбрать только тех людей, у которых возраст больше или равен значению v:

my_records_arr = PeopleModel.objects.filter(man_age__gte=v).order_by('pk')

Выбрать только тех людей, у которых возраст меньше или равен значению v:

my_records_arr = PeopleModel.objects.filter(man_age__lte=v).order_by('pk')

Выбрать только тех людей, у которых возраст СТРОГО больше значения v:

my_records_arr = PeopleModel.objects.filter(man_age__gt=v).order_by('pk')

Выбрать только тех людей, у которых возраст СТРОГО меньше значения v:

my_records_arr = PeopleModel.objects.filter(man_age__lt=v).order_by('pk')

Выбрать людей, возраст которых принадлежит отрезку [ 14 , 22 ]

my_records_arr = PeopleModel.objects.filter(man_age__gte=14).filter(man_age__lte=22).order_by('pk')
PreviousСвязь в моделяхNextОтключение csrf

Last updated 5 years ago

Was this helpful?

https://github.com/maxim218/DjangoPostgresJson
https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-16-04