Найдено результатов: 21

Представления классов в Django

Django вид указывает на функцию, которая может быть проблемой, если вы хотите изменить только немного функциональности. Да, я мог бы иметь миллион аргументов ключевых слов и даже больше операторов if в функции, но я больше думал об объектно-ориентированном подходе.

Например, у меня есть страница, на которой отображается пользователь. Эта страница очень похожа на страницу, которая отображает группу, но она все еще не настолько похожа, чтобы просто использовать другую модель данных. Группа также имеет членов и т. д...

Одним из способов было бы указать представления на методы класса, а затем расширить этот класс. Пробовал ли кто-нибудь этот подход или у него есть другие идеи?

python   django   views   oop    

580   9   16:03, 1st July, 2020


Отслеживание версий, автоматизация изменений схемы DB с помощью django

В настоящее время я смотрю на фреймворк Python Django для будущих веб-приложений на базе БД, а также для порта некоторых приложений, написанных в настоящее время в PHP. Одной из самых неприятных проблем в течение последних лет было отслеживание изменений схемы базы данных и развертывание этих изменений в производительных системах. Я не смел просить, чтобы их тоже можно было отменить, но, конечно, для тестирования и отладки это было бы отличной функцией. Из других вопросов здесь (таких как этот или этот) я вижу, что я не одинок и что это не тривиальная проблема. Кроме того, я нашел много вдохновения в ответах там.

Теперь, поскольку Django кажется очень мощным, есть ли у него какие-либо инструменты, чтобы помочь с этим? Может быть, это даже в их документах, и я пропустил это?

database   django   svn    

576   6   21:06, 1st October, 2020


обновление auto_now DateTimeField в родительской модели w/ Django

У меня есть две модели: сообщение и вложение. Каждое вложение прикрепляется к определенному сообщению, используя ForeignKey в модели вложения. Обе модели имеют auto_now DateTimeField под названием updated. Я пытаюсь сделать так, чтобы при сохранении любого вложения оно также устанавливало обновленное поле в связанном сообщении на now. Вот мой код:

def save(self):
    super(Attachment, self).save()
    self.message.updated = self.updated

Будет ли это работать, и если вы можете объяснить мне, почему? Если нет, то как я должен это сделать?

python   database   django   orm    

545   3   09:14, 24th August, 2020


Представление порядка в реляционной базе данных

У меня есть коллекция объектов в базе данных. Картинки в фотогалерее, товар в каталоге, главы в книге и т. д. Каждый объект представлен в виде строки. Я хочу иметь возможность произвольно упорядочивать эти изображения, сохраняя этот порядок в базе данных, чтобы при отображении объектов они были в правильном порядке.

Например, предположим, что я пишу книгу,и каждая глава-это объект. Я пишу свою книгу и размещаю главы в следующем порядке:

Введение, доступность, форма и Функция, Ошибки, Последовательность, Заключение, Индекс

Он отправляется в Редактор и возвращается со следующим предложенным порядком:

Введение, Форма, Функция, Доступность, Последовательность, Ошибки, Заключение, Индекс

Как я могу хранить этот заказ в базе данных надежным и эффективным способом?

У меня были следующие идеи, но я не в восторге от них:

  1. Массив. Каждая строка имеет порядок ID, когда порядок изменяется (через удаление с последующей вставкой), порядок IDs обновляются. Это упрощает поиск, так как это просто ORDER BY , но кажется, что его легко сломать.

    // REMOVAL
    UPDATE ... SET orderingID=NULL WHERE orderingID=removedID
    UPDATE ... SET orderingID=orderingID-1 WHERE orderingID > removedID
    // INSERTION
    UPDATE ... SET orderingID=orderingID+1 WHERE orderingID > insertionID
    UPDATE ... SET orderID=insertionID WHERE ID=addedID

  2. Связанный список. Каждая строка имеет столбец для идентификатора следующей строки в заказе. Обход кажется дорогостоящим здесь, хотя может каким-то образом использовать ORDER BY , о котором я не думаю.

  3. Разнесенный массив. Установите orderingID (как используется в #1), чтобы быть большим, так что первый объект 100, Второй 200 и т.д. Затем, когда происходит вставка, вы просто помещаете ее в (objectBefore + objectAfter)/2 . Конечно, это должно было бы быть перебалансировано время от времени, поэтому у вас нет вещей слишком близко друг к другу (даже с поплавками, вы в конечном итоге столкнетесь с ошибками округления).

Ни один из них не кажется мне особенно элегантным. У кого-нибудь есть лучший способ сделать это?

sql   database   django   django-models    

550   11   17:20, 13th August, 2020


Указание перечисления mySQL в модели Django

Как мне определить и использовать ENUM в модели Django?

python   mysql   django   django-models   enums    

583   8   21:40, 9th August, 2020


Поддерживает ли Hostmonster Django

Я знаю, что hostmonster позволяет Python. Кто-нибудь успешно запустил Django там? Есть проблемы?

django   shared-hosting   hostmonster    

488   4   13:58, 19th August, 2020


Unicode против UTF-8 путаница в Python / Django?

Я наткнулся на этот отрывок в учебнике Django :

Модели Django есть ул. по умолчанию () метод, который вызывает unicode () и преобразует результат в UTF-8 bytestring. Это означает, что unicode(p) вернет строку Unicode, а str (p) вернет обычную строку с символами, закодированными как UTF-8.

Теперь я в замешательстве, потому что, насколько мне известно, Unicode-это не какая-то конкретная представленность, так что "Unicode string" в Python? Означает ли это UCS-2? В гугле появился этот "Python Unicode Tutorial" , который смело заявляет:

Unicode-это двухбайтовая кодировка, которая охватывает все распространенные в мире системы письма.

что же здесь явно не так, или это так? Меня много раз смущали проблемы с набором символов и кодировкой, но здесь я совершенно уверен, что документация, которую я читаю, запутана. Кто-нибудь знает, что происходит в Python, когда он дает мне "строку Unicode"?

python   django   unicode    

480   5   07:28, 18th August, 2020


Самая чистая и быстрая настройка сервера для Django

Я собираюсь развернуть сайт среднего размера на базе Django. У меня есть выделенный сервер Ubuntu.

Я действительно запутался в том, какой серверный софт использовать. Поэтому я подумал про себя: почему бы не спросить stackoverflow?

То, что я ищу, это:

  • Легко настраивается
  • Быстрый и легкий доступ к ресурсам
  • Могут служить медиафайлы
  • Возможность обслуживать несколько djangosites на одном сервере
  • Я бы предпочел не устанавливать PHP или что-то еще, что высасывает ресурсы, и для чего я не имею никакой пользы.

Я слышал о mod_wsgi и mod_python на Apache, nginx и lighty. Какие из них плюсы и минусы, и не упустил ли я кого-нибудь?

@Barry: почему-то мне кажется, что Apache-это слишком много для меня. А как насчет альтернатив?

@BrianLy: хорошо, я проверю mod_wsgi еще немного. Но зачем мне нужен Apache, если я обслуживаю статические файлы с помощью lighty? Мне также удалось обслуживать само приложение django с помощью lighty. Разве это плохо в любом случае? Прости за то, что вел себя так глупо :-)

UPDATE : а как насчет lighty и nginx - какие варианты использования являются идеальным выбором?

python   django   apache   hosting    

637   13   14:11, 27th August, 2020


Нужно ли для того что б изучить и начать програмировать на Django изучать сначала Python?

Нужно ли для того что б изучить и начать програмировать на Django изучать сначала Python?



Оно полезно, но можно ли обойтись?

Django    

424   8   23:20, 16th August, 2020


Как избавиться от повторяющихся join'ов при пересекающихся ForeignKey в Django?

Заметил такую неприятную штуку. Допустим есть модель которая связана двумя другими имеющими одинаковый ForeignKey.



class File(models.Model):<br/>
&nbsp;&nbsp;&nbsp;&nbsp;#some stuff<br/>
&nbsp;&nbsp;&nbsp;&nbsp;pass<br/>
 <br/>
class ServerFile(models.Model):<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<b>file = models.ForeignKey('File')</b><br/>
&nbsp;&nbsp;&nbsp;&nbsp;#some stuff<br/>
 <br/>
class UserFile(models.Model):<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<b>file = models.ForeignKey('File')</b><br/>
&nbsp;&nbsp;&nbsp;&nbsp;#some stuff<br/>
<br/>
class Link(models.Model): <br/>
&nbsp;&nbsp;&nbsp;&nbsp;user_file = models.ForeignKey('UserFile')<br/>
&nbsp;&nbsp;&nbsp;&nbsp;server_file = models.ForeignKey('ServerFile')<br/>
&nbsp;&nbsp;&nbsp;&nbsp;#some stuff




Соответственно при включенном list_select_related, получаем дополнительный join на File



SELECT

  `fff_link`.`id`,

  `fff_link`.`user_file_id`,

  `fff_link`.`server_file_id`,

  `fff_userfile`.`id`,

  `fff_userfile`.`file_id`,

  `fff_file`.`id`,

  `fff_serverfile`.`id`,

  `fff_serverfile`.`file_id`,

  T5.`id`

FROM `fff_link`

  INNER JOIN `fff_userfile`

    ON (`fff_link`.`user_file_id` = `fff_userfile`.`id`)

  INNER JOIN `fff_file`

    ON (`fff_userfile`.`file_id` = `fff_file`.`id`)


  INNER JOIN `fff_serverfile`

    ON (`fff_link`.`server_file_id` = `fff_serverfile`.`id`)

  INNER JOIN `fff_file` T5

    ON (`fff_serverfile`.`file_id` = T5.`id`)




Может кто сталкивался? Как лечить?

Отказ от пересечения — не вариант, естественно

Django   ORM    

363   1   12:57, 24th August, 2020


Различия Django в App Engine и на собственном сервере

Подскажите, какие различия между реализацией django как самостоятельно продукта и django в google app engine? Я понимаю, что в app engine у меня есть ограничения, которые указаны в «Большой таблице», что там своя достаточно урезанная версия баз данных (кстате чем урезанная?), а какие ограничения на использование django ешё накладываются в app engine? Помогите всё понять максимально подробно. Что есть такого в django чего нет в django для app engine?

Django   G   Suite    

384   1   14:16, 24th August, 2020


Django + MongoDB?

Собственно вопрос. Как можно заставить Django работать с MongoDB или вообще с noSQL базами данных.



Спасибо

Django   MongoDB    

418   3   03:26, 5th August, 2020


Организация кода django-проекта, связывание приложений?

Стало вот интересно кто как организует свои джанго проекты:

создаете несколько приложений(по одному для логических разделов аля блог, контакты, новости итд) и в каждом отдельно создаете модели и вьюхи;

храните весь код в корне проекта, разделяя логические разделы дроблением моделей и вьюх на файлы и только многоразовый код выносите в приложения;

другие варианты;?

Если плодите приложения то как организуете взаимодействие между ними(речь не о шаблонах, а о логике)?



Просто изучаю джангу на практике, реализую довольно крупный проект, и вот после месяца писанины пришол к выводу что мой подход совсем не оптимален и мешает придерживатся KISS и DRY, потому очень прошу поделитесь опытом.

Django    

365   3   12:12, 10th August, 2020


Есть альтернативы django-timezones?

Нашел модуль работы с датами, привязанными к часовым поясам.



Автор неплохо продумал его (по функционалу он меня устраивает), но похоже на практике так и не использовал. Потому что в нем полно ошибок, в том числе нет поддержки mysql, и он один способен сгенерировать сотню запросов на страницу.



Есть, конечно разные форки, но существенно ситуацию ни один из них не исправляет.



Поэтому вопрос, есть другое распространенное средство работы с датами, привязанными к часовым поясам для Django?

Django   Часовые   пояса    

293   2   20:24, 6th August, 2020


Django or redsolutions?

Только начал изучать django — прочитал и сделал проектик djbook.ru

Установил джанго на апач через mod_python, т.е. чуть чуть ознакомился.

Вопрос такой лучше сначала сделать сайт на django или сразу пробовать ковырять redsolutions cms (написана на django)?

Django    

417   4   11:32, 2nd August, 2020


Django: Как передать в форму POST для обработки?

Здравствуйте. У меня такая форма:



class LocalityForm(forms.Form):<br>
   region = forms.ModelChoiceField(queryset=Region.objects.all(), required=False, empty_label="")<br>
   locality = forms.ModelChoiceField(queryset=Locality.objects.none(), required=False, empty_label="")<br><br>
   #для того чтоб можно было выбрать населенный пункт в зависимости от<br>
   #региона переданного в POST, а так же вернуть введенные уже данные дописал к форме так<br>
   def __init__(self, data = None, *args, **kwargs):<br>
       super(forms.Form, self).__init__(*args, **kwargs)<br>
       if data:<br>
         if data.get('region'):<br>
           self.reg = data['region']<br>
           self.fields['region'].initial = self.reg<br>
           self.fields['locality'].queryset = Locality.objects.filter(region=self.reg).order_by('name')<br>
         if data.get('locality'):<br>
           self.loc = data['locality']<br>
           self.fields['locality'].initial = self.loc<br>




вызывается довольно просто form = LocalityForm(request.POST)

Но тогда исчезает проверка формы, т.е. форма получается в любом случае не валидная, видимо из-за перехвата POST данных аргументом data.



Передавать через именованные аргументы не хочется — ибо вызов формы становится довольно идиотским

form = LocalityForm(request.POST, region = request.POST['region'], locality = request.POST['locality'])

Хотя если другого решения нет то видимо придется довольствоваться тем что есть.

Django    

439   1   09:44, 25th August, 2020


Вложенные комментарии для Джанго?

Такие же как на хабре.

Какие модули используете, чем хороши?

Django    

498   4   04:29, 23rd August, 2020


Django template inheritance и ajax?

Я только-только начал поглядывать в сторону Python+Django, поэтому знаком с ними на уровне чтения документации.

Насколько я понимаю, в шаблонах Django {% extends base.html %} должен идти первой строчкой. Однако, хотелось бы иметь возможность не наследоваться от базового шаблона, если это ajax-запрос. Условие сюда, видимо, написать нельзя, поэтому на данный момент очевиден только такой вариант:

Во view проверяем, не ajax-ли запрос. Если ajax — рендерим, к примеру,view-ajax.html. Иначе — view.html в котором:

{% extends base.html %}<br/>
###<br/>
{% include view-ajax.html %}




Однако, этот вариант не выглядит привлекательным. Как, скажем:



{% notajaxextends base.html %}



Но для такого, казалось бы, очевидного поведения писать, как мне сейчас видится, не самый простой темплейт-тег — кажется сомнительным. Почти уверен что существуют решения. Да и кроме того, при extends мы переопределяем блоки базового шаблона. А так как переопределять становится нечего — что же тогда выводить? Передавать требуемый блок как параметр тега?



{% notajaxextends base.html content %}<br/>
###<br/>
{% block content %} ... {% endblock %}




Поможете начинающему джангисту разрешить эту нелепую дилему?

Django    

368   4   17:05, 21st August, 2020


Какая версия Django поддерживается AppEngine SDK 1.4.2?

Известно, что SDK 1.2.3 поддерживает 1.0; однако, сейчас разработчикам рекомендуется использовать форк "Django-nonrel"

Некое введение в использование Django версии ~0.96..1 совместно с GAE есть тут, на хабре. Пробую применить его под новый SDK и вышеупомянутый форк.

Однако текущая версия Django — 1.2.5, на завтра назначен релиз 1.3. Какая-то версия из этих будет работать в среде AppEngine — без необходимости в дополнительных патчах?

(извиняюсь за дикое количество ссылок, но держать в записях ссылки на устаревшие версии — терпения не хватает :)

Django   G   Suite    

411   1   02:45, 1st October, 2020


middleware которое будет возвращать ошибку если за последние n секунд было больше k запросов c одного ip адреса

Здравствуйте! Начал изучать Django, здесь встала задачка как реализовать миддлвер, что бы возвращал исключение если за последние n секунд было больше k запросов c одного ip адреса.

На сколько смог додуматься, код ниже:

class FilterIPMiddlewareCountTime:

    def __init__(self, get_request):
        self.get_request = get_request
        self._count_request = 3
        self._total = 0
        self._time_request = time.time()

    def __call__(self, response):

        answer_ips = ['127.0.0.1']
        ip = response.META.get("REMOTE_ADDR")

        if ip not in answer_ips:
            raise PermissionDenied()

        t1 = time.time()
        request = self.get_request(response)
        t2 = time.time()
        self._total += t2 - t1
        print('{: ^15}  {}'.format('TOTAL: ', self._total))
        print('{: ^15}  {}'.format('COUNT:', self._count_request))
        
        if self._count_request > self._total:
            self._total = 0
            raise PermissionDenied()
        return request

django   python  

2863   0   14:11, 16th March, 2022


Не понимаю почему не открывается детальное описание продукта

Добрый день! Не могу разобраться с выводом товаров по категории. Суть  такая, есть каталог, в каталоге категории и в эти категории добавляется один товар. Например в админке добавляю например каталог МЕБЕЛЬ, далее в этом каталоге добавляем две категории ДЛЯ КУХНИ и ДЛЯ СПАЛЬНИ и добавляем уже продукт КРОВАТЬ для категории ДЛЯ СПАЛЬНИ. Вобщем каталоги и разделы открываются, но при попытке перейти в продукт КРОВАТЬ пишет страница не найдена 404.

Вот код

models.py

from django.db import models
from django.urls import reverse
 
class Catalog(models.Model):
 
sections = models.CharField(max_length=150, db_index=True, verbose_name="Название")
img = models.ImageField(upload_to='img/catalog/')
slug = models.SlugField(max_length=150, db_index=True, unique=True, null=True)
 
class Meta:
ordering = ('sections',)
index_together = (('id', 'slug'),)
verbose_name = 'Главная страница каталога'
verbose_name_plural = 'Главная страница каталога'
 
def __str__(self):
return self.sections
 
def get_absolute_url(self):
return reverse('catalog', kwargs={"slug": self.slug})


 
class Category(models.Model):
catalog = models.ForeignKey(Catalog, related_name='catalog', on_delete=models.CASCADE,
verbose_name='Выбрать каталог'
)
name = models.CharField(max_length=150, db_index=True, verbose_name="Название")
img = models.ImageField(upload_to='img/catalog/')
slug = models.SlugField(max_length=200, db_index=True, unique=True, null=True)
 
class Meta:
ordering = ('name',)
index_together = (('id', 'slug'),)
verbose_name = 'Категория'
verbose_name_plural = 'Категории'
 
def __str__(self):
return self.name
 
def get_absolute_url(self):
return reverse('catalog-detail', kwargs={"slug": self.slug})
 
class Product(models.Model):
category = models.ForeignKey(Category, related_name='category', on_delete=models.CASCADE,
verbose_name='Выбрать категорию'
)
name = models.CharField(max_length=255, db_index=True,unique=True, null=True, verbose_name="Название")
text = models.TextField('Текст')
url = models.CharField(max_length=255, db_index=True, verbose_name="Ссылка на сайт")
pdf = models.FileField(upload_to='pdf/')
slug = models.SlugField(max_length=200, db_index=True, unique=True, null=True)
 
class Meta:
ordering = ('name',)
index_together = (('id', 'slug'),)
verbose_name = 'Продукт'
verbose_name_plural = 'Продукты'
 
def __str__(self):
return self.name
 
def get_absolute_url(self):
return reverse('product-detail', kwargs={"slug": self.slug})
 
class Gallery(models.Model):
image = models.ImageField(upload_to='img/catalog/')
product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='images')
class Meta:
verbose_name = 'Галерея'
verbose_name_plural = 'Галереи'

urls.py:

from django.contrib import admin
from django.urls import path, include
 
from . import views
 
urlpatterns = [
path('', views.CatalogView.as_view(), name='catalog'),
path('<slug>/', views.CatalogDetailViews.as_view(), name='catalog-detail'),
path('product/<slug:slug>', views.ProductDetailViews.as_view(), name='product-detail')
]

views.py:

from django.shortcuts import render, get_object_or_404
from .models import Catalog_text, Catalog, Category, Product
from django.views.generic import DetailView, ListView
 
class CatalogView(ListView):
model = Catalog
template_name = 'catalog/catalog.html'
context_object_name = 'catalog'
 
class CatalogDetailViews(ListView):
model = Category
template_name = 'catalog/catalog-detail.html'
context_object_name = 'category'
 
def get_context_data(self, **kwargs):
# Call the base implementation first to get a context
context = super(CatalogDetailViews, self).get_context_data(**kwargs)
# Add in a QuerySet of all the Baklawa
context['cat'] = Catalog.objects.all()
return context
 
def get_queryset(self):
category = get_object_or_404(Catalog, slug__iexact=self.kwargs.get('slug'))
queryset = category.catalog.all()
return queryset
 
class ProductDetailViews(DetailView):
model = Product
template_name = 'catalog/product-detail.html'
context_object_name = 'product'


 

 

В шаблоне :

{% for cat in category %}
                    <div class="room-item catalog_items">
                        <ul class="hover-effect-cover">
                            <li>
                              <img src="{{ cat.img.url }}" alt="">
                              
                              <div class="effect-to-top">
                                <h3>{{ cat.name }}</h3>
                                <p></p>
                                <a href="{% url 'product-detail' cat.id %}" class="button">ПОДРОБНЕЕ</a>
                              </div>
                            </li>
                        </ul>
                    </div>
                    {% endfor %}

 

Допустим я в админке категория test и продукт для этой категории product1, ссылка в шаблоне получается catalog/product/test и соответственно выдает 404, но если я руками поправлю ссылу в адресной строке на catalog/product/product1 то все откроется как надо (описание продукта).

 

django  

4351   0   11:51, 11th November, 2022