Django - Рабочий процесс MAC OSX - Вопросы на эффективных методологиях разработки

ответ ybo был бы моим первым ответом также. Выражение запроса, эквивалентное из этого:

var query = from a in computeAList()
            from b in a.Alist
            select b.C;

Ради полноты, другие ответы в этом потоке являются вариациями на ту же тему.

От ybo (тот же самый запрос, выраженный как запись через точку):

var query = listOfA.SelectMany(a => a.Alist, (a, b) => b.C);

От Ray Hayes (включая оператор Where; я переформатировал немного):

var query = listOfA.SelectMany(a => a.AList, (a, b) => b.C)
                   .Where(c => c.Length > 0);
5
задан Vadim Kotov 16 August 2017 в 09:20
поделиться

4 ответа

Спасибо всем, кто прочитал это и ищет способ получше. Я думаю, что модульные тесты - определенно более простой подход.

Итак, согласно документации, вам просто нужно создать файл tests.py параллельно с models.py и поместить туда тесты.

from django.test import TestCase
from perforce.models import P4User, P4Client

class ModelTests(TestCase):
  def setUp(self):
    self.p4 = P4.P4()
    self.p4.connect()

  def test_BasicP4(self):
    """
    Make sure we are running 2009.1 == 65
    """
    self.failUnlessEqual(self.p4.api_level, 65)

  def test_P4User_get_or_retrieve(self):
    """
    This will simply verify we can get a user and push it into the model
    """
    user = self.p4.run(("users"))[0]
    dbuser = P4User.objects.get_or_retrieve(user.get('User'))

    # Did it get loaded into the db?
    self.assertEqual(dbuser[1], True)

    # Do it again but hey it already exists..
    dbuser = P4User.objects.get_or_retrieve(user.get('User'))
    # Did it get loaded into the db?
    self.assertEqual(dbuser[1], False)

    # Verify one field of the data matches
    dbuser = dbuser[0]
    self.assertEqual(dbuser.email, user.get("Email"))

Теперь вы можете просто запустить терминал и выполнить тест python manage.py, который запустит тесты, но, опять же, это довольно ограниченный вид и по-прежнему требует, чтобы вы переключались между программами и выходили из них .. Итак, вот как вы это делаете это прямо из Textmate с помощью ⌘R.

Добавьте строку импорта вверху и несколько строк внизу.

from django.test.simple import run_tests
#
# Unit tests from above
#
if __name__ == '__main__':
  run_tests(None, verbosity=1, interactive=False)

И теперь ⌘R будет работать непосредственно из TextMate.

3
ответ дан 13 December 2019 в 05:39
поделиться

Прежде всего, не нужно делать ./ manage.py runserver , пока ваши модели не будут на месте.

Во-вторых, очистите базу данных / перестройте базу данных должно быть выполнено после исправления кода, и может быть выполнено одним махом с помощью ./ manage.py reset perforce

В-третьих, то, что вы каждый раз вводите в оболочку (импортируйте модели, попробуйте создать объект) вместо этого следует писать в наборе тестов. Затем вы можете выполнить ./ manage.py test perforce вместо того, чтобы запускать оболочку и вводить ее снова. На самом деле, если вы используете набор тестов, в этом нет необходимости, потому что он каждый раз будет создавать чистый фиктивный БД и разбирать его для вас, когда он будет готов.

В-четвертых, вместо «МОЛИТЕСЬ ..» . ", попробуйте" Посмотреть, как проходят тесты. "

4
ответ дан 13 December 2019 в 05:39
поделиться

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

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

3
ответ дан 13 December 2019 в 05:39
поделиться

Хорошо, я укушу :-) Вот что я использую:

  • MAMP . Вы получаете полнофункциональный стек Apache + MySQL + PHP + phpMyAdmin для управления слоями Интернета и БД. Он отлично подходит для приложений, выходящих за рамки базового SQLite. Базовая версия бесплатна, но я пошел дальше и выбрал Pro, потому что я очень часто ее использую и хотел поддержать разработчиков. Хороший способ проверить и убедиться, что все работает, - это запустить тестовый сервер Django, затем разверните и протестируйте под MAMP на своем компьютере и, наконец, отправьте его на сайт развертывания. (Вы можете попытаться автоматизировать этот процесс с помощью чего-то вроде Fabric .)

  • Eclipse + PyDev + Расширения PyDev . После правильной настройки вы получите завершение кода Python, приятную среду разработки и полную отладку. Вы можете настроить его так, чтобы он запускал тестовый сервер Django для вас, и вы могли устанавливать точки останова в любой строке исходного кода Django или в вашем собственном коде. Что мне нравится в Eclipse, так это то, что как только вы привыкнете к среде, вы также сможете использовать ее для программирования на C / C ++, Java, JavaScript, Python и Flex.

  • Aptana для Eclipse . Это помогает при разработке интерфейсов AJAX и редактировании шаблонов Django иметь достойный редактор / отладчик Javascript + HTML.

  • TextMate . Я' Мы создали проект TextMate, включающий все исходные коды Django, и сохранили его в исходном каталоге Django. Таким образом, я могу быстро выполнить поиск проекта в исходном коде Django и одним щелчком открыть исходный файл. Вы также можете настроить его так, чтобы вы могли переключаться между редакторами Eclipse и TextMate и автоматически перезагружать их.

  • Приличный редактор MySQL или SQLite. phpMySQLAdmin - это нормально, но иногда полезно иметь отдельный инструмент. SequelPro (ранее CocoaMySQL) и Navicat - все довольно хорошо подходят для MySQL. Одним из преимуществ является то, что после развертывания приложения вы можете использовать эти инструменты для удаленного доступа к серверу базы данных развертывания и настройки его со своего рабочего стола. На стороне SQLite SQLiteManager и Base являются хорошими коммерческими инструментами, как и бесплатный FireFox SQLite Manager . По крайней мере, вы можете наблюдать за тем, что делает Django под капотом.

  • Я использую Subversion для контроля версий в основном потому, что он работает на автономном Mac Mini, который сохраняет в массив Drobo RAID плюс автоматически выполняет резервное копирование всего на пару других внешних дисков. . Это поверх Time Machine (да, я параноик :-) Раньше я использовал поддержку SVN Eclipse, но теперь я большой поклонник Версий . В какой-то момент, когда я смогу придумать хорошую схему зеркалирования, я переключусь на Mercurial, Git или Bazaar, но пока это работает довольно хорошо

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

Большинство из них можно получить бесплатно или за умеренную плату (<100 долларов США). Но если бы мне пришлось выбирать «обязательные» элементы для разработки Django на Mac, это были бы Eclipse и PyDev.

Я уверен, что кое-что я пропустил. Приятно слышать, какие инструменты используют все остальные.

2
ответ дан 13 December 2019 в 05:39
поделиться
Другие вопросы по тегам:

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