• Стоит ли выносить конфиги Django в ini?

    sim3x
    @sim3x
    Нет

    Секретные переменные нужно вынести в env

    Если требуются корректировать настройки в зависимости от окружения (дев, тест, прод), то файл settings преобразуют в модуль и внутри модуля делают несколько файлов для каждого окружения, которые модифицируют основной конфиг

    settings
    ├── dev.py
    ├── __init__.py
    ├── settings.py
    └── test.py


    внутри __init__.py можно организовать автоматическое определение окружения по переменным окружения
    Ответ написан
    Комментировать
  • Как правильно реализовать двойной запрос?

    @anjilnew
    frontend
    function getUserAccount() {
      return axios.get('/user/12345');
    }
    
    function getUserPermissions() {
      return axios.get('/user/12345/permissions');
    }
    
    axios.all([getUserAccount(), getUserPermissions()])
      .then(axios.spread(function (acct, perms) {
        // Both requests are now complete
      }));
    Ответ написан
    Комментировать
  • Почему не удаляется последний добавленный пост?

    @SeaBreeze876
    Front-end разработчик
    есть мысль, что проблема в методе add_todo. Все экшены асинхронны, мутации происходят только после получения ответа от сервера, однако add_todo об этом совсем не печется.
    GET запрос при добавлении отправляется не дожидаясь ответа от POST и возвращает элементы без последнего добавленного. После ответа от POST к элементам припушивается последний добавленный, причем без id.
    Ответ написан
    6 комментариев
  • Opensource Тамагочи?

    proDOOMman
    @proDOOMman
    Гента же! Есть даже два уровня стожности: arch и ~arch. Нужно кормить её интернетами, играть с portage, убираться через eclean. А потом гента вырастет большая-пребольшая
    Ответ написан
    Комментировать
  • Как сделать мутацию после удаления статьи в vuex?

    @lemme
    Frontend
    Либо я что-то не понимаю, либо все слишком просто.
    Я предполагаю, что state.posts - массив объектов (постов), то нужно удалить этот пост из массива, т.е банальный фильтр

    p.s подозреваю, что data - id поста.
    state.posts = state.posts.filter(post => post.id !== data)
    Ответ написан
    1 комментарий
  • Почему не получается авторизоваться до тех пор пока не сделаю CTRL + F5?

    @levchak0910
    answer.correct ? press({correct: true}) : next()
    Позвольте познакомить Вас с интерцепторами)
    В Вашем случае
    axios.interceptors.request.use(function (config) {
        const userToken = localStorage.getItem('user-token');
        if(userToken) config.headers["Authorization"] = `JWT ${userToken}`;
        return config;
    });

    Используйте vue-axios, чтобы не импортировать axios каждый раз
    Ответ написан
    Комментировать
  • Как изменить цвет шага в прогресс баре?

    0xD34F
    @0xD34F Куратор тега CSS
    <div id="progressBar"></div>
    
    <button>green</button>
    <button>red</button>
    <button>yellow</button>
    <button>magenta</button>
    <button>aqua</button>

    let percent = 0;
    const gradientParts = [];
    
    $('button').click(function() {
      if (percent < 100) {
        const color = $(this).text();
        percent++;
        gradientParts.push(`${color} ${percent - 1}%`, `${color} ${percent}%`);
        const gradient = gradientParts.concat(`#435C91 ${percent}%`, '#435C91 100%');
    
        $('#progressBar').css({
          background: `linear-gradient(to right, ${gradient.join(', ')})`,
        });
      }
    });

    https://jsfiddle.net/2yqzgeLb/
    Ответ написан
    Комментировать
  • Как обуздать Django messages?

    winordie
    @winordie
    Лучшая документация -- исходники
    Давайте посмотрим как работает framework messages.

    https://github.com/django/django/blob/master/djang...
    def messages(request):
        return {
            'messages': get_messages(request),
            'DEFAULT_MESSAGE_LEVELS': DEFAULT_LEVELS,
        }
    ...
    def get_messages(request):
        if hasattr(request, '_messages'):
            return request._messages
        else:
            return []

    Так messages попадают на страницу. Т.е. они берутся из request._messages. Как же они туда попадают?

    https://github.com/django/django/blob/master/djang...
    class MessageMiddleware(MiddlewareMixin):
        def process_request(self, request):
            request._messages = default_storage(request)
    ...
    def default_storage(request):
        return import_string(settings.MESSAGE_STORAGE)(request)
    ...
    MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'

    Значит в request._messages у нас лежит FallbackStorage(request)

    Перейдем к нашему коду
    messages.error(request, 'Ваш диапазон дат занят для данного объекта.')

    Что тут происходит? Посмотрим:
    https://github.com/django/django/blob/master/djang...
    def error(request, message, extra_tags='', fail_silently=False):
        add_message(request, constants.ERROR, message, extra_tags=extra_tags,
                    fail_silently=fail_silently)
    ...
    def add_message(request, level, message, extra_tags='', fail_silently=False):
        if not isinstance(request, HttpRequest):
            raise TypeError("add_message() argument must be an HttpRequest object, "
                            "not '%s'." % request.__class__.__name__)
        if hasattr(request, '_messages'):
            return request._messages.add(level, message, extra_tags)  # *** THIS ***
        if not fail_silently:
            raise MessageFailure('You cannot add messages without installing '
                        'django.contrib.messages.middleware.MessageMiddleware')

    Ага, вызывается метод add знакомого нам объекта FallbackStorage.
    Ему передается в качестве параметров:
    - level = constants.ERROR = 40
    - message = 'Ваш диапазон дат занят для данного объекта.'
    - extra_tags = ''

    Посмотрим на этот метод
    https://github.com/django/django/blob/master/djang...
    def add(self, level, message, extra_tags=''):
            if not message:
                return
            level = int(level)
            if level < self.level:
                return
            # Add the message.
            self.added_new = True
            message = Message(level, message, extra_tags=extra_tags)
            self._queued_messages.append(message)
    ...
    def _get_level(self):
            if not hasattr(self, '_level'):
                self._level = getattr(settings, 'MESSAGE_LEVEL', constants.INFO)
            return self._level

    Из этого кода можно сделать вывод что сообщение попадает в очередь сообщений если его уровень более или равен тому который задан в settings.MESSAGE_LEVEL (по умолчанию = contants.INFO = 20)

    Таким образом чтобы добавлялись только наши сообщения необходимо:
    1) в settings.py установить
    # settings.py
    ...
    MY_SUPER_ERROR = 80
    MESSAGE_LEVEL = MY_SUPER_ERROR
    ...

    2) Во вью писать
    if not available_cars:
            carstoshow = None
            messages.add_message(request, settings.MY_SUPER_ERROR, 'Ваш диапазон дат занят для данного объекта.')
            return redirect('car_detail', pk=car_used_id)
    Ответ написан
    1 комментарий
  • Как поменять размер шрифта проводника (список файлов слева) в IDE Visual Studio Code?

    khusamov
    @khusamov Автор вопроса
    ReactJS, NodeJS, TypeScript, Sencha ExtJS
    Нашел параметр, который косвенно влияет на размер шрифта:

    "window.zoomLevel": 2
    Ответ написан
    Комментировать
  • Django vs Asp.net?

    NightmareZz
    @NightmareZz
    Нищий разработчик из Симферополя
    И питон и дотнет - это не просто языки, фреймворки и технологии, это огромные пласты программерской деятельности с миллионными коммьюнити. Оба из них весьма популярны и имеют крайне широкое применение. Есть безусловно и отличия, но их всех не перечислить, как не перечислить достоинств и недостатков. Потому выбор чего-то одного из этого, это - либо вопрос случайности, приверженности, или определённого склада ума. Нельзя просто так взять и посоветовать что-то одно.
    Ответ написан
    Комментировать
  • Что это за артефакт в Firefox и как его устранить?

    Попробуйте поиграть с настройкой "Use hardware acceleration when available"/"По возможности использовать аппаратное ускорение" (в первой вкладке дополнительных)
    Ответ написан
    2 комментария
  • Постоянные ошибки, это нормально?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Если бы точно следуя инструкциям из Интернета можно было выполнять работу программиста, то на наших местах давно сидели бы таджики.
    Ответ написан
    1 комментарий
  • Как определиться с деятельностью?

    @Kelera
    Я думаю вам нужна не просто задача, а цель. Для чего вы вообще хотите этим заниматься. так для себя или профессионально. Зарабатывать только в этой области или на подработку. Как в себе разберетесь, так и здесь все будет понятно.
    Ответ написан
    Комментировать
  • Испугает ли заказчика сайт на Django?

    @dady_KK
    PM
    Это больше не ответ, а просто история. Как нам в моей бывшей крупной компании понадобилось переписать один из мелких проектов поддержки в более крупный (дошла очередь), то его передали молодому, но крайне амбициозному РМ на отработку и дали полный карт-бланш. Кроме того, что человек был гавно (сильно мягко сказал) он выбрал в качестве ЯП - пайтон и решил использовать Джанго, заказал на фрилансе (у своего программиста) движок и через несколько месяцев оперативно проект был сдан. РМа уволили, так как работать с ним было нельзя и отдали мне проект, год с ним долбились из-за пайтона, так как мы работали только с пхп. В итоге за год переписали движок на пыхе. Сейчас я конечно уже более толерантно отношусь к пайтону, но все же Вам лично посоветую смотреть более широко и предлагать оба языка заказчикам
    Ответ написан
    2 комментария
  • Почему получаю django.db.utils.InternalError: (1049, "Unknown database 'db'")?

    @Adikjoro
    В "NAME" пишешь название базы данных, которую ты создал в MySQL-сервере.

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'mydb',
            'USER': 'root',
            'PASSWORD': 'password',
        }
    }


    При подключении в локальную базу данных нет необходимости указывать хост и порт.
    Ответ написан
    Комментировать
  • Почему получаю django.db.utils.InternalError: (1049, "Unknown database 'db'")?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Вы путаете БД mysql и sqllite.
    Ответ написан
    3 комментария
  • Как вывести по очередно сгенерированные кнопки?

    Fzero0
    @Fzero0
    Вечный студент
    Ну думаю с начало нужно немного изменить массив
    var mylist = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten'];
    var newArray = mylist.map(()=>{
      return  mylist.splice(0,2);
    });
    console.log(newArray);

    Затем сразу вызвать genButtons(newArray[0]) чтобы получить первые две кнопки
    в саму функцию генерации кнопок добавить чтобы на кнопки вешалось событие онклик
    для генерации след кнопок что типа такого
    function nextElement() {
       document.getElementById('test').appendChild(genButtons(newArray[myIndex++%newArray.length]));
    };

    как то так только тут без удаления
    var mylist = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten'];
    var myIndex = 0;
    var newArray = mylist.map(()=>{
      return  mylist.splice(0,2);
    });
    function genButtons(a) {
        for (var x = 0; x < a.length; x++) {
          var btn = document.createElement('input')
          btn.id = 'b' + x;
          btn.value = a[x];
          btn.type = 'button';
          btn.onclick = function() { // Note this is a function     	
            nextElement();
          };  
           document.getElementById('test').appendChild(btn); 
        }    
      }
    genButtons(newArray[myIndex]); 
    function nextElement() {
      myIndex ++;
    	genButtons(newArray[myIndex]);
    };
    Ответ написан
    Комментировать
  • Есть ли аналог сайта для python как javarush?

    @ffibonacci
    Ответ написан
    Комментировать
  • Как расположить 3 div по центру родительского div, да еще и сохранить адаптивность?

    standy
    @standy
    Решение с флексбокс (везде кроме ИЕ 9 и ниже)
    .container {
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
        align-items: center;
        align-content: center;
    }

    jsfiddle.net/u9hpeemz/2
    Ответ написан
    Комментировать