Форматирование времен даты, обеспеченных как строки в Django

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

9
задан Jahongir Rahmonov 6 June 2017 в 11:41
поделиться

2 ответа

Вам, вероятно, лучше проанализировать строку, полученную от веб-службы, в коде представления, а затем передать datetime.date (или строку) в шаблон для отображения. Суть шаблонов Django заключается в том, что там нужно выполнять очень мало работы по кодированию; они предназначены только для презентации, и поэтому они делают все возможное, чтобы помешать вам писать код Python, встроенный в HTML.

Что-то вроде:

from datetime import datetime
from django.shortcuts import render_to_response

def my_view(request):
    ws_date_as_string = ... get the webservice date
    the_date = datetime.strptime(ws_date, "%Y-%m-%d %H:%M:%S+0000")
    return render_to_response('my_template.html', {'date':the_date})

Как указывает Мэтью, при этом снижается часовой пояс. Если вы хотите сохранить смещение от GMT, попробуйте использовать отличную стороннюю библиотеку dateutils , которая легко обрабатывает даты синтаксического анализа в нескольких форматах с часовыми поясами, без необходимости предоставлять шаблон формата времени, такой как strptime.

11
ответ дан 4 December 2019 в 20:24
поделиться

Я согласен с ответом Рекса М , но я бы пошел еще дальше. Если вы используете шаблон MVC (или что-то подобное), представление делегирует нажатие кнопки контроллеру. Конечно, методы контроллеров могут быть вызваны из любого места в вашем классе - скажем, из вашего обратного вызова таймера.

Итак, вернемся к исходному коду:

using System.Windows.Forms;

class MyForm : Form
{
    private Timer myTimer;
    private Button myButton;

    private MyController myController;

    public MyForm()
    {
        // ...
        // Initialize the components, etc.
        // ...

        myTimer.Tick += new EventHandler( myTimer_Tick );
        myButton.Click += new EventHandler( myButton_Click );

        myTimer.Start();
    }

    private void myTimer_Tick( object sender, EventArgs eventArgs )
    {
        myTimer.Stop();
        myController.SomeMethod()
    }

    private void myButton_Click( object sender, EventArgs eventArgs )
    {
        // All the stuff done here will likely be moved 
        // into MyController.SomeMethod()
        myController.SomeMethod();
    }
}

Одним из преимуществ использования MVC является отделение контроллера от представления. Контроллер теперь можно легко использовать для нескольких типов представлений, а выход из графического интерфейса пользователя проще поддерживать, поскольку он содержит очень мало логики приложения.

РЕДАКТИРОВАТЬ: добавлено в ответ на комментарии OP

Основные принципы проектирования в разговоре о разработке программного обеспечения о сцеплении и сплоченности. Важно отметить, что мы стремимся минимизировать взаимосвязь между компонентами при максимальной согласованности, так как это приводит к созданию более модульной и удобной в обслуживании системы. Такие шаблоны, как MVC, и принципалы, такие как Open / Closed Principal, основываются на этих основах, предоставляя разработчику более ощутимые шаблоны реализации.

Итак, любой, кто пишет код, как видно из исходного сообщения, не понимает основ разработки программного обеспечения и должен значительно развить свои навыки. OP следует похвалить за определение этого «запаха кода» и попытку понять, почему он не совсем правильный.

Некоторые соответствующие ссылки:

0
ответ дан 4 December 2019 в 20:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: