Django - Mac OSX工作流程 - 有关高效开发方法的问题

rh0*_*ium 5 django macos workflow textmate

我将概述我的工作流程,我想就如何提高效率提出一些建议.现在看起来有点麻烦和重复(我讨厌的东西),所以我正在寻找一些改进.请记住,我仍然是django的新手以及它是如何工作的但我是一个非常流利的编码器(恕我直言).所以这里......

工具(我每天都使用这些工具,所以我不倾向于转移):

  • Mac OSX Leopard
  • TextMate的
  • 终端带标签
  • Perforce公司

假设

  • Django Basics(教程/买书)
  • Python Fluent(运行2.6,支持IDLE)
  • 开始我的第一个应用程序在models.py上工作

开始

  • 创建一个TextMate项目,其中包含整个django树.

TextMate项目http://img.skitch.com/20090821-g48cpt38pyfwk4u95mf4gk1m7d.jpg

  • 在终端的第一个选项卡中启动服务器

    python ./manage.py runserver

  • 在终端窗口的第二个选项卡中启动shell

    python ./manage.py shell

  • 这产生了iPython,让我开始开发工作流程

工作流程

  • 创建并构建一个名为models.py的基本模型

  • 建立一个基本模型


class P4Change(models.Model):
  """This simply expands out 'p4 describe' """
  change        = models.IntegerField(primary_key=True)
  client        = models.ForeignKey(P4Client)
  user          = models.ForeignKey(P4User)
  files         = models.ManyToManyField(P4Document)
  desc          = models.TextField()
  status        = models.CharField(max_length=128)
  time          = models.DateField(auto_now_add=True)


  def __unicode__(self):
    return str(self.change)

admin.site.register(P4Change)
Run Code Online (Sandbox Code Playgroud)
  • 在第一个终端(运行服务器)中停止它^ C和syncdb启动服务器

>  python ./manage.py syncdb
Creating table perforce_p4change
Installing index for perforce.P4Change model
Run Code Online (Sandbox Code Playgroud)
  • 在shell终端窗口加载它..

> python ./manage.py shell
Python 2.6.2 (r262:71600, Apr 23 2009, 14:22:01) 
Type "copyright", "credits" or "license" for more information.

IPython 0.10 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object'. ?object also works, ?? prints more.

In [1]: from perforce.models import *

In [2]: c = P4Client.objects.get_or_create("nellie")
Run Code Online (Sandbox Code Playgroud)
  • 它是否打破是/否如果它不起作用然后执行此操作:
    • 停止外壳
    • 清除数据库
    • 重建数据库
    • 修复代码
    • 重新加载shell
    • 重新加载模块
    • 祈祷...

问题/意见/想法

  • 是我还是这看起来非常低效?
  • 看起来我应该能够重新加载(模块),但我无法弄清楚如何做到这一点..任何人?
  • 看起来我应该能够在TextMate中测试这个?任何人??
  • 即使刚刚离开外壳,我也必须验证我要离开..

对于你们所有的天才来说,重点在于向我展示一种更有效的工作方式.我完全乐于接受合理的建议.我并不倾向于转移工具,但我愿意接受批评.

rh0*_*ium 3

感谢所有阅读本文并正在寻找更好方法的人。我认为单元测试绝对是更简单的方法。

\n\n

因此,根据文档,您只需创建一个与 models.py 并行的文件tests.py 并将测试放入其中。

\n\n
from django.test import TestCase\nfrom perforce.models import P4User, P4Client\n\nclass ModelTests(TestCase):\n  def setUp(self):\n    self.p4 = P4.P4()\n    self.p4.connect()\n\n  def test_BasicP4(self):\n    """\n    Make sure we are running 2009.1 == 65\n    """\n    self.failUnlessEqual(self.p4.api_level, 65)\n\n  def test_P4User_get_or_retrieve(self):\n    """\n    This will simply verify we can get a user and push it into the model\n    """\n    user = self.p4.run(("users"))[0]\n    dbuser = P4User.objects.get_or_retrieve(user.get(\'User\'))\n\n    # Did it get loaded into the db?\n    self.assertEqual(dbuser[1], True)\n\n    # Do it again but hey it already exists..\n    dbuser = P4User.objects.get_or_retrieve(user.get(\'User\'))\n    # Did it get loaded into the db?\n    self.assertEqual(dbuser[1], False)\n\n    # Verify one field of the data matches\n    dbuser = dbuser[0]\n    self.assertEqual(dbuser.email, user.get("Email"))\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在您可以简单地启动终端并执行 python manage.py 测试,这将运行测试,但同样,这也是一个相当有限的视图,并且仍然需要您换入/换出程序。所以这就是您执行此操作的方法使用 \xe2\x8c\x98R 直接从 Textmate 获取。

\n\n

在顶部添加一条导入行,在底部添加几行。

\n\n
from django.test.simple import run_tests\n#\n# Unit tests from above\n#\nif __name__ == \'__main__\':\n  run_tests(None, verbosity=1, interactive=False)\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在 \xe2\x8c\x98R 将直接从 TextMate 运行。

\n