• Как поменять часовой пояс в Django ( TIME_ZONE )?

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

    mzcoding
    @mzcoding
    Web-Разработка
    Итак! Допустим у вас есть некая сущность для работы с платежами назовем ее Payment
    1. Создаем контракт и описываем (допустим) метод pay, отвечающий за (допустим) генерацию ссылки на оплату:
    namespace App\Contract;
    
    interface PaymentInterface
    {
       public function pay(): string;
    }

    2. Создаем сервис Payment и имплементим наш интерфейс + описываем метод pay и создаем конструктор еще, который (допустим) принимает некую ссылку на оплату (платежной системы) - Ссылку будем брать (допустим из конфига):
    namespace App\Service;
    
    use App\Contract\PaymentInterface;
    
    class Payment implements PaymentInterface
    {
        protected $paymentLink;
    
        public function __construct($paymentLink)
        {
            $this->paymentLink = $paymentLink;
        }
    
        public function pay(): string
        {
            return (string)$this->paymentLink;
        }
    }

    3. Создаем провайдер: php artisan make:provider PaymentProvider:
    namespace App\Providers;
    
    use App\Contract\PaymentInterface;
    use App\Service\Payment;
    use Illuminate\Support\ServiceProvider;
    
    class PaymentProvider extends ServiceProvider
    {
        /**
         * Register services.
         *
         * @return void
         */
        public function register()
        {
            $this->app->bind(PaymentInterface::class, function ($app) {
                return new Payment(config('app.payment_link'));
            });
        }
    
        /**
         * Bootstrap services.
         *
         * @return void
         */
        public function boot()
        {
            //
        }
    }

    4. Теперь надо зарегать наш провайдер в конфиге (config/app.php) - массив providers (в конец):
    App\Providers\PaymentProvider::class,

    5. Пропишем в config/app.php параметр payment_link:
    'payment_link' => 'https://money.yandex.ru’,

    6. Теперь создадим контроллер (или вызовем в существующем):
    namespace App\Http\Controllers;
    
    use App\Contract\PaymentInterface;
    
    class PaymentController
    {
        public function getPayment(PaymentInterface $payment)
        {
            dd($payment->pay());
        }
    
    }

    7. Готово )

    П.С: Обращаем внимание, что на вход принимаем интерфейс, а не реализацию
    П.П.С: Можно также вызывать в любом классе который зарегистрирован в контейнере.
    П.П.П.С: Можно юзать связывания без интерфейса (читаем в доке)

    Так-же можно вызвать ваш класс, через хелпер resolve (читаем в доке)

    Ссылка на доку: https://laravel.com/docs/5.8/container
    Ответ написан
    5 комментариев
  • Как получить переменную data после исполнения асинхронной функции?

    igorzakhar
    @igorzakhar
    Сессии нужно закрывать.
    +
    Don’t create a session per request. Most likely you need a session per application which performs all requests altogether.


    Набросал на коленке:
    import asyncio
    import aiohttp
    
    
    async def call_url(url, session):
        print('Starting {}'.format(url))
        async with session.get(url) as response:
            response = await session.get(url)
            data = await response.text()
            print('{}: {} bytes: {}'.format(url, len(data), data))
            return data
    
    
    async def run(urls):
        async with aiohttp.ClientSession() as session:
            futures = [call_url(url, session) for url in urls]
            result = await asyncio.gather(*futures)
            return result
    
    if __name__ == '__main__':
        urls = ['http://www.google.com',
                'http://www.yandex.ru', 'http://www.python.org']
        ioloop = asyncio.get_event_loop()
        data = ioloop.run_until_complete(run(urls))
        print(data)
        ioloop.close()
    Ответ написан
    Комментировать
  • Как с помощью Bootsrap 4 реализовать данный блок правильно?

    Madeas
    @Madeas
    UI / UX Designer, Frontend Developer
    можно так
    https://jsfiddle.net/1ym3j7gt/
    Ответ написан
    Комментировать