• Как реализовать загрузку файлов на сервер в Django?

    zigen
    @zigen
    From docs:

    # In forms.py...
    from django import forms
    
    class UploadFileForm(forms.Form):
        title = forms.CharField(max_length=50)
        file = forms.FileField()


    Обрабатываем форму:

    from django.http import HttpResponseRedirect
    from django.shortcuts import render
    from .forms import UploadFileForm
    
    def upload_file(request):
        if request.method == 'POST':
            form = UploadFileForm(request.POST, request.FILES)
            if form.is_valid():
                form.save()
                return HttpResponseRedirect('/success/url/')
           return render(request, 'upload.html', {'form': form})
        else:
            form = UploadFileForm()
        return render(request, 'upload.html', {'form': form})
    Ответ написан
    2 комментария
  • Какую админку выбрать для Django?

    aRegius
    @aRegius
    Python Enthusiast
    Привет.

    Конкретно какую - на этот вопрос ответа у меня нет по причине, созвучной вашей.

    Но, посмотрите, может эта информация поможет каким-либо образом:
    1. Здесь можно посмотреть описание и сравнение Админок.
    2. Гринфилды (авторы небезызвестной Two Scoops...) среди более популярных отмечают django-grappelli, django-suit и django-admin-bootstrapped.

    Чем смог, как говорится...
    Ответ написан
    4 комментария
  • Django, регистрация пользователя. Как реализовать?

    gordon_shamway
    @gordon_shamway
    class UserRegistrationForm(forms.ModelForm):
        password = forms.CharField(label='Password', widget=forms.PasswordInput)
        password2 = forms.CharField(label='Repeat password', widget=forms.PasswordInput)
    
        class Meta:
            model = User
            fields = ('username', 'first_name', 'email')
    
        def clean_password2(self):
            cd = self.cleaned_data
            if cd['password'] != cd['password2']:
                raise forms.ValidationError('Passwords don\'t match.')
            return cd['password2']

    def register(request):
        if request.method == 'POST':
            user_form = UserRegistrationForm(request.POST)
    
            if user_form.is_valid():
                # Create a new user object but avoid saving it yet
                new_user = user_form.save(commit=False)
                # Set the chosen password
                new_user.set_password(user_form.cleaned_data['password'])
                # Save the User object
                new_user.save()
                profile = Profile.objects.create(user=new_user)
               
                return redirect('/account/login/')
        else:
            user_form = UserRegistrationForm()
        return render(request, 'account/register.html', {'user_form': user_form})

    class Profile(models.Model):
        user = models.OneToOneField(settings.AUTH_USER_MODEL)
        position_lat = models.DecimalField(decimal_places=8, max_digits=10, verbose_name="Широта")
        position_long = models.DecimalField(decimal_places=8, max_digits=10, verbose_name="Довгота")
        def __str__(self):
            return 'Profile for user {}'.format(self.user.username)
    Ответ написан
    Комментировать
  • Чем производить контроль траффика на Linux-шлюзе?

    insiki
    @insiki
    broken pipe
    Squid.
    Ответ написан
    Комментировать
  • Зачем использовать pandas и numpy для анализа данных?

    @asd111
    Python используется потому что его можно потом встроить в рабочее приложение. Так делает гугл, яндекс и др.
    Numpy и т.п. библиотеки написаны на С поэтому они не такие медленные как кажется.
    Там где не хватает скорости python библиотек написанных на С, используется С++ а не SQL.
    SQL подходит для некоторых задач, но нарисовать график с помощью SQL нельзя, а с помощью тех же python библиотек возможно. В анализе данных часто строят графики, считают векторные и т.п. произведения, на SQL такое писать неудобно.
    Если не используется SQL или python, то используют обычно wolfram mathematica или mathcad и т.п. математические программы где удобно считать матрицы, векторы, производные и удобно строить графики.
    С помощью python пишут софт, в котором используется результат анализа данных, поэтому и саму обработку данных пишут на python(или на С++).
    Для python есть большие machine learning библиотеки наподобие google tensor flow https://www.tensorflow.org/ что опять же говорит о том, что данный язык является стандартом для написания прикладных приложений, связанных с machine learning, так же как SQL является стандартом для работы с БД.
    Ответ написан
    2 комментария
  • Windows forms, только учусь?

    EreminD
    @EreminD
    Кое-что умею
    В данном случае, самое простое - это вот так:
    private void button1_Click(object sender, EventArgs e)
            {
                conpoezdb.Open();
                SqlDataAdapter SDA = new SqlDataAdapter("INSERT INTO train(number,place, count, data, time)VALUES ('" + textBox1.Text + "', '" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "')", conpoezdb);
                SDA.SelectCommand.ExecuteNonQuery();
                conpoezdb.Close();
                MessageBox.Show("saved");
                updateView();
            }
    
    private void button4_Click(object sender, EventArgs e)
            {
                updateView();
            }
    
    private void updateView()
            {
                conpoezdb.Open();
                SqlDataAdapter SDA = new SqlDataAdapter("SELECT * FROM train", conpoezdb);
                DataTable data = new DataTable();
                SDA.Fill(data);
                dataGridView1.DataSource = data;
                conpoezdb.Close();
            }


    В общем, логику обновления datagridview выносим в отдельный метод и дергаем его по нажатию на view и/или по нажатию на save

    UPD: ну это при условии, что вам нужна кнопка view
    UPD1: вот так вот, если без кнопуи view
    private void button1_Click(object sender, EventArgs e)
            {
                conpoezdb.Open();
    
                //пишем в бд
                SqlDataAdapter SDA = new SqlDataAdapter("INSERT INTO train(number,place, count, data, time)VALUES ('" + textBox1.Text + "', '" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "')", conpoezdb);
                SDA.SelectCommand.ExecuteNonQuery();
    
                 //запрашиваем по новой
                SqlDataAdapter SDA = new SqlDataAdapter("SELECT * FROM train", conpoezdb);
                conpoezdb.Close();
    
                DataTable data = new DataTable();
                SDA.Fill(data);
                dataGridView1.DataSource = data;
    
                MessageBox.Show("saved");
            }
    Ответ написан
    Комментировать
  • С помощью чего реализовать календарную ленту в Qt?

    @tugo
    1. Найти уже готовое, например https://www.kdab.com/kd-chart/
    2. Встроить QWebView, в нем выполнять JQuery код, реализующий вашу диаграмму. Гуглите "gantt chart jquery"
    3. Сделать самому. Разрабатываемый класс будет наследником QWidget и состоять из других виджетов (QLabel, QCombobox и т.д.). Настраиваете размещение этих виджетов, их внешний вид (у стандартных виджетов можно сильно менять внеший вид - мама не узнает) и поведение.
    Ответ написан
    Комментировать
  • Как получить количество продуктов из foreign key django?

    @deliro
    vendor.product_set.count()

    Когда ты создаёшь FK(Vendor) для модели Product, Django создаёт обратную связь (менеджер) для модели Vendor, имя по-умолчанию - имямодели_set. Изменяется переопределением related_name. Например:
    class Product(models.Model):
        vendor = models.ForeignKey(Vendor, related_name='products')

    При таком коде ты сможешь обращаться к продуктам так:
    some_vendor.products.all()
    Раз это менеджер, для него доступны все те же действия, что и для стандартного (objects):
    some_vendor.products.filter(key=value)
    some_vendor.products.create(your=params)  # Создаст продукт с уже заполненым полем vendor=some_vendor


    Следует отметить, что если у модели два FK на одну модель, то related_name переопределить придётся, иначе появляется двусмысленность:
    class Message(Model):
        sender = ForeignKey(User)
        recipient = ForeignKey(User)
        text = TextField()

    При таком коде, если ты хочешь получить, например, сообщения, которые отправил/получил user, совершенно неясно, что нужно писать, поэтому нужно либо отключить обратную связь (related_name='+'), либо предоставить её:
    class Message(Model):
        sender = ForeignKey(User, related_name='sent_messages')
        recipient = ForeignKey(User, related_name='received_messages')
        text = TextField()
    Ответ написан
    4 комментария
  • Как зарабатывают разработчики на бесплатных framework`ах?

    Denormalization
    @Denormalization
    Взять тот же Laravel:
    - Как минимум 3 сопутсвующих ПЛАТНЫХ проекта (forge, spark, envoyer).
    - Конференции с нехилым ценником.
    - Консультации
    - Не уверен, но возможно laracasts что-то отстегивает.

    И так же у многих крупных OpenSource проектов. Заработок идет на enterprise решениях на основе их проекта. (Та же платная поддержка).

    Некоторые (на вскидку не вспомню) OpenSource проекты получают финансированние от крупных организаций (Google, Yahoo, Microsoft, IBM).
    Ответ написан
    Комментировать
  • На чем писать кроссплатформенное GUI приложение?

    aparusov
    @aparusov
    Разработчик ПО, предприниматель
    Да, C++ на порядок сложнее по сравнению Java и С#, хотя Qt многое упрощает.

    Для кроссплатформенных офисных приложений хороша Java, - GUI на JavaFX или Swing, но не SWT (в нем много косяков, которые отнимают много времени). Если лучше знаешь C#, то на нем (язык посовременнее, фреймворк попроще будет) и сразу в MonoDevelop (так-как нужна кроссплатформенность).

    С серверной частью (если трехзвенка) важно определиться на чем она должна работать (в какой ОС). Если тоже кроссплатформенная, то лучше все на java делать и разобраться с серверными технологиями Java: Spring или Servlet-контейнер или даже сервер Java EE. Использовать ORM (Hibernate, например). Но с этим стеком Java придется повозиться, - порог вхождения высокий, зато потом открываются богатые возможности (независимые от ОС! ).
    Ответ написан
    Комментировать
  • Как вывести новости на страницу используя Django Template?

    По итогам обсуждения в комментариях к вопросу дать содержательный ответ не представляется возможным. Варианты:
    1) Займитесь Python и Django, разберитесь, как это всё работает.
    2) Найдите специалиста, который вам это сделает.
    Ответ написан
    Комментировать
  • На чем писать кроссплатформенное GUI приложение?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    Для C# есть mono - свободный вариант .NET Framework (не то, чтобы во всем соответствовал ему, но работать можно). Работает, соответственно, и на Linux и на MacOS и на Windows. В местной IDE (MonoDevelop) можно создавать GUI в стиле drag&drop, как в старые времена на уроках информатики....

    От себя хочу добавить мысль о такой штуке как Vala. Если вы не слышали, это такой язык (я бы сказал смесь C-C#-Javascript), есть сравнение c C# для быстрого перехода на нее, удобная работа с GTK+ - окошки, кнопочки - все, что нужно делается просто и быстро, и, чтобы совсем не горевать, все это транслируется в чистый си. Соответственно собирается под любую платформу, где будет работать GTK+.
    Ответ написан
    2 комментария
  • Как правильно хранить настройки в django проекте?

    sim3x
    @sim3x
    разнести настройки "по категориям"
    Никогда такой надобности не было

    settings1.py
    foo='bar'

    settings.py
    from settings1.py import *

    зависимости от environment, например, db.py разный для prod\dev\test


    myprog
    ├── manage.py
    └── myprog
        ├── __init__.py
        ├── settings
        │   ├── __init__.py
        │   ├── global.py
        │   └── settings_test.py
        ├── urls.py
        └── wsgi.py


    __init__.py
    import os
    
    if os.environ['test']:
        from settings_test.py import *


    global.py/main.py/...
    # common settings for all env types

    settings_test.py
    from global.py import *
    
    foo='buzz'
    Ответ написан
    Комментировать
  • Как уйти с распутья технологий?

    @0x131315
    Стратегию уже подсказали: найти любую работу, чтобы кушать, и тем самым выиграть время на изучение чего-то, что поможет зарабатывать больше, и тем самым выиграть еще больше времени, и в конце концов изучить то, благодаря чему будешь работать не на зарплату, а на удовлетворение.

    Что касается языка - на первое время следует сосредоточится на чем-то популярном, попсовом, где больше всего вакансий, где проще найти работу. На зарплаты пока внимания обращать смысла нет - это лишь первый шаг, потом все-равно зарплаты станут больше, и скорее всего сменишь сферу деятельности, в соответствии со своими вкусами и желаниями.
    Но чтобы получить время на изучение языка, требуется источник дохода - любая работа, которая позволит кушать, платить за квартиру, одежду, оборудование и услуги.

    А так по моему важнее не инструмент, а умение им пользоваться. Начинать следует с алгоритмов, а язык использовать как инструмент.
    Хотя откладывать изучение языка тоже нельзя - практика важнее теории. Так что в комплексе - постигай алгоритмы на практике, по мере необходимости, и запоминай их.

    Т.е. глобально нет смысла учить конкретный язык ради изучения языка - выучить любой язык не проблема, и это можно сделать прямо по ходу решения задачи. Я за свою жизнь пользовался целой кучей языков, и все они так или иначе, но похожи друг на друга, проблем с их изучением никогда не было. Так что выучить новый язык - не проблема.

    Конкретный язык нужен кодерам - это те, кто воплощает чужие идеи в коде, т.е. конечные винтики в процессе разработки софта, исполнители. От кодеров требуется только перенести уже готовый алгоритм на требуемый язык, максимально быстро, и по возможности без ошибок.
    Изучив конкретный язык ты можешь стать кодером, но это черновая работа, и по хорошему - временная, просто ступенька на пути становления программиста. Нужно двигаться к архитектору, инженеру, непосредственно программисту в широком смысле.

    Программисту важнее знать как именно решать задачи, т.е. иметь представление об алгоритмах и навык формализации всего и вся. Т.е. уметь непосредственно разрабатывать алгоритмы, умение кодить - второстепенно.
    Т.е. программист - это лишь инженер сетей обработки информации.

    Также упрощает задачу стандартизация подходов к решению задач, парадигм - большинство из них уже формализованы, и описаны. Например всем известное ООП, модульное программирование, конечные автоматы, и т.п. Описано более двух десятков таких моделей, их следует по возможности освоить. И не стесняться комбинировать.

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

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

    Но все-равно, даже программисту нужен опыт. Не важно что он отвязан от языков - он все-таки привязан к одному языку, информации, и должен уметь с ней обращаться.
    Опыт экономит время и усилия - там, где сперва требовалось неделю гуглить и пробовать, потом, с опытом, все делаешь за час, просто уже понимая что, как, когда и зачем.

    Опыт нарабатывается практикой - тут нет ничего нового: просто берешь себе задачу по вкусу, и решаешь.
    Не можешь сам генерировать задачи - ищешь годный внешний генератор: форумы проблемных пользователей, имиджборды, конкурсы, аукционы программистов (это где работают фрилансеры). Также хорошо идет создание своего проекта или участие в разработке чужого - развитие любого проекта всегда порождает множество задач, которые нужно кому-то решать, а это отличный генератор.
    В общем ищешь реальных заказчиков, или берешься за незначительные заказы, или работаешь ради альтруизма, решая то, что тебя не просили - есть всякие гитхабы и багтрекеры.

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

    Недоведение решений до конца - следствие неверного подхода: либо берешь задачи, к которым еще не готов, слишком сложные, либо не имеешь возможности работать - у тебя нет условий для решения задачи: времени, места и внимания. Либо просто тебе это реально не нужно - тебя и так все устраивает, и планов на будущее нет.

    С третьим - придешь, когда поймешь, что тебе это нужно. Из-под палки не учатся.

    Со вторым все понятно: надо либо создать условия, либо отказаться от этой деятельности, и перейти к другой.
    Кто-то отказывается, уходит на другие работы, в основном физические, неквалифицированные, просто чтобы не думать. И как правило остается там до конца, уже не в силах выбраться из болота рутины.
    Кто-то приспосабливается - отгораживает себе уголок, меняет работу на ту, что дает больше свободного времени, начинает работать по ночам, забивает шум наушниками, и т.п. костыли.
    Кто-то кардинально меняет свою жизнь - переезжает в сьемные квартиры, выделяет себе комнату, изолирует ее или устанавливает в доме режим тишины, в общем создает себе полноценные комфортные условия для творчества. Это если удаленка - многие именно из-за невозможности работать дома, предпочитают офисы, или специальные кафе или клубы для работы.

    С первым все просто: не можешь что-то решить - отложи, и спустись на ступеньку ниже по шкале сложности.
    Есть такой психологический феномен: от решенных задач ты получаешь удовлетворение, силы и мотивацию двигаться вперед, от нерешенных - негатив, апатию, потерю воли и мотивации.
    Причем мозг устроен так, что запоминается лишь негатив. Поэтому крайне важно решать задачи, и не допускать незавершенных задач. Отложи, но не забрасывай.
    Нерешенная задача - это как психологический запой, нечто вроде депрессии: одна нерешенная задача тянет за собой другую нерешенную задачу, и так быстро уходишь на дно, теряя мотивацию и веру в себя. Замкнутый круг. Ты находишься именно в нем.

    Разрывать такие круги можно лишь одним способом - рутиной: медленным, последовательным и целенаправленным натиском, движением в одну сторону. Грубо говоря перестаешь жить эмоциями и импульсами, вырабатываешь продуманную программу развития, и действуешь по ней, строго, как робот, до тех пор, пока не начнешь получать положительный отклик от работы, пока не придет желание двигаться дальше - это вернулись воля, мотивация и вера в себя.

    Чтобы вернуть веру в себя, нужно стать победителем. Победители всегда побеждают - в этом и суть. Необходимо начать побеждать, любой ценой: нужно брать такие задачи, которые точно сможешь решить, какими бы простыми они не были. Можешь вернуться к азам, началу, детскому уровню сложности, если потребуется - главное чтобы задачи начали решаться, не важно какие и как. Пока не уверен, что готов двигаться дальше - удерживаешь уровень, каким бы низким и зазорным он не был. Важно обмануть мозг, а не показать класс всему миру, иначе обратно утонешь.

    Сложность задачи не особо влияет на мотивацию, а вот факт решения/нерешения - влияет сильно. Не решил - значит не осилил, не осилил - значит не достоин, не достоин - значит иди ко дну и не рыпайся. Это как импотенция: импотент - значит не мужик, не мужик - значит никто, ничего не достоин и об тебя можно ноги вытирать. Подсознание портит всю малину, так что не следует давать ему шанса - лучше решить задачу попроще, чем не решить по сложнее.
    Ответ написан
    7 комментариев
  • Вопрос по выводу контента Django в HTML?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Ну так передавайте во вьюхах данные в контекст, и в темплейтах эти данные собственно выводите.

    В views.py передаете в контекст какие-то данные:
    from django.http import Http404
    from django.shortcuts import render
    from models import КакаяТоМодель
    
    def my_view(request, какой_то_id):
        try:
            my_obj = КакаяТоМодель.objects.get(pk=какой_то_id)
        except КакаяТоМодель.DoesNotExist:
            raise Http404(u"Объект КакаяТоМодель с id={id} отсутствует в базе".format(id=какой_то_id))
    
        какая_то_переменная = ФункцияДляПолучениЧегоТоИзБазы()
        return render(request, 'какой_то_темплейт.html', {'my_obj': my_obj, 'my_var': какая_то_переменная})


    а в темплейте получаете то что передали в контекст
    ...
    {{ my_obj.какое_то_поле }}
    {{ my_obj.какое_то_поле }}
    ....
    {{ my_var }}
    ....


    А вообще вот это:
    class BannerView(View):
    model = Banner
    template_name = 'home.html'

    def get_queryset(self):
    return Banner.objects.all()


    нужно заменить на это:
    class BannerView(ListView):
        model = Banner
        template_name = 'home.html'

    тогда в темплейте список всех ваших объектов передастся в виде object_list, по которым вы можете пробежаться как-то так:
    ....
    {% for obj in object_list %}
         {{ obj.какое_то поле }}
    {% endfor %}
    ....


    тут
    class HomePage(TemplateView):
    template_name = 'home.html'

    контекст можно передать так:

    class HomePage(TemplateView):
        template_name = 'home.html'
    
    def get_context_data(self, *args, **kwargs):
        context = super(HomePage, self).get_context_data(*args, **kwargs)
        context['имя_какой_то_переменной_для_темплейта'] = ФункцияДляПолученияКакихТоДанных()
        return context


    тогда в темплейте она будет доступна как:

    ....
    {{ имя_какой_то_переменной_для_темплейта }}
    ....


    А вообще - пройдите хотя бы какой-нибудь туториал по Django где это подробно объясняется...
    Ответ написан
  • Удаленная база Mysql и Android приложение как поступить?

    petermzg
    @petermzg
    Самый лучший программист
    1. Удаленный сервер должен быть доступен из интернета. Так что база должна быть или на хостинге или у вас за NAT с белым IP.
    2. Пишете web сервер и поднимаете на сервере (на хостинге за вас уже подняли) уж на чем нравится (asp.net mvc или php, или python)
    2.1. Сервер взаимодействует с вашей Mysql базой
    2.2. Можно из андройд приложения делать http запросы к серверу и получать ответ на выбор (xml, json, text, набор байт)

    Мне вот нравиться протокол (json-rpc)
    Ответ написан
    Комментировать
  • Перехожу с RoR на Python (Django) нужна помощь?

    un1t
    @un1t
    1) обычно мне двух версий питона хватает которые есть в убунте, но можно еще юзать deadsnakes
    Для разных версий пакетов virtualenv.
    2) лучше 3
    3) у джанги даже pre-alpha версии довольно стабильные, а релиз уже сразу смело можно юзать.
    4) хрен его знает
    5) шаблоизатор встроенный либо jinja2. Так обычно pillow, djangorestframework, django-mptt, pytest, pytest-django, django-debug-toolbar, pytils, django-cleanup, sorl-thumbnail
    Ответ написан
    Комментировать
  • Что такое файл models в проекте django?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Я верно понимаю, что файл models.py - это файл, где мы создаём бд для нашего проекта?

    Модель - сущность из конкретной задачи над которой вы работаете. Будь то пользователь, статья, продукт или еще что со всеми их взаимоотношениями, относящимися к данному приложению.
    В Django модели принято размещать в models.py
    Сами таблицы в БД создает Django автоматически. Примерное представление вы сможете получить если почитаете о миграциях https://docs.djangoproject.com/en/1.9/topics/migra...

    Если да, то наверняка можно создавать модель в SQLite studio и затем использовать её в проекте?

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

    Тогда код в этом файле должен сгенерироваться по созданному файлу из SQLite studio?

    Можно сделать и так. Командой manage.py inspectdb сгенерить модели из существующей базы, и попробовать их завести в проекте на Django. Но опять таки - вы сильно осложните себе жизнь. Обычно это требуется, когда необходимо связать Django с уже существующими таблицами в сторонней БД для работы с ними как с моделями. Обычно эти модели прописывают как модели с флагом managed=False, дабы Django не влияла на структуру уже существующей БД.
    Ответ написан
    3 комментария
  • Как запустить django test на sqlite?

    @marazmiki
    Укротитель питонов
    Сделайте отдельный конфиг для тестов:
    # project.settings_test
    from .settings import *
    
    DATABASES['default'] = {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': ':memory:'
    }
    И запускайте тесты с явным указанием тестового конфига:
    ./manage.py test --settings=project.settings_test --failfast
    Как Вы потом поймёте, БД — это не единственное, что желательно переопределить для тестов
    Ответ написан
    Комментировать
  • В чем моя причина провала тестового задания Яндекса?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну давайте я покритикую:

    возьмем файлик

    1) вы не разобрались как объявлять методы у прототипов с новой нотацией `class`:

    class Travelsort {
        constructor() {}
        sortTickets(tickets) {}
    }


    2) вы не умеете пользоваться исключениями.
    if (!Array.isArray(cards)) {
        throw new ValueError('Wrong input');
    }


    3) использование let там где должен использоваться const

    4) в принципе использование переменных там где их быть не должно

    5) вы зачем-то реализовали свою функцию сортировки, я не увидел в требованиях отсутствия возможности использовать старый добрый Array.prototype.sort

    6) Общие замечания по кодинг стайлу. snake_case там где должен быть camelCase, пишите с большой буквы то что должно быть с маленькой и т.д.

    7) нарушения принципа единой ответственности. У вас объеткт умеет и сортировать и писать куда-то. Это категорически плохо.

    8) Если исправить 7-ой пункт то наш класс превращается просто в функцию.

    Далее... берем следующий файлик

    1) если вы пишите комментарии к таким маленьким кускам кода - стало быть у вас хромает именование вещей. Все должн быть понятно просто из названий методов/функций/переменных. При работе в команде над серьезными проектами это немаловажно, ибо код чаще читают чем пишут и экономить нужно именно это время.

    2) вы зачем-то тут в прототип объекта строки впихиваете функции для парсинга CSS. Таким образом мы нарушаем принцип единой ответственности. Да и в целом расширять без надобности прототипы объектов как-то не ок.

    Чуть дальше проскролил - вы пытаетесь расширить прототип строк для того что бы добиться API jquery? ух, батенька.

    3) очень много дублирования.

    4) очень плохо с protected variations.

    Справедливости ради, ваш код входит в категорию ">50% JS кода", так что не расстраивайтесь. Просто для работы в яндексе нужен чуть более высокий уровень и понимание вещей.
    Ответ написан
    17 комментариев