我将概述我的工作流程,并希望得到一些关于如何提高效率的建议。它现在看起来有点繁琐和重复(我讨厌的东西),所以我正在寻找一些改进。请记住,我仍然是一个新的django和它是如何工作的,但我是一个相当流利的编码(恕我直言)。所以这里去...
工具 (我每天都用,所以我不想换):
- Mac OSX豹
- 文本伴侣
- 带凸片的端子
- 必须
假设
- Django基础(做了教程/买了书)
- Python流利(运行2.6,支持IDLE)
- 在www.example.com上启动第一个应用程序models.py
开始
- 创建一个包含整个django树的TextMate项目。
TextMate Project http://img.skitch.com/20090821-g48cpt38pyfwk4u95mf4gk1m7d.jpg
- 在终端的第一个选项卡中启动服务器
python ./manage.py runserver
- 在终端窗口的第二个选项卡中启动shell
python ./manage.py shell
- 这将生成iPython,让我们开始开发工作流
工作流程
- 创建并构建名为www.example.com的基本模型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)
- 在第一个终端(Running server)中,将其停止^C并同步数据库启动server
> python ./manage.py syncdb
Creating table perforce_p4change
Installing index for perforce.P4Change model
- 在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")
- 是否断裂是/否如果不工作,则执行以下操作:
- 把炮弹停下来
- 清除数据库
- 重建数据库
- 修复代码
- 重新装载髋臼杯
- 重新加载模块
- 祈祷...
问题/评论/想法
- 是我的错还是这太没效率了?
- 看起来我应该能够做一个重新加载(模块),但我不知道如何做到这一点..任何人?
- 看起来我应该可以从TextMate内部测试这个??任何人??
- 即使只是走出壳,我也必须确认我想离开。
这是为了让你们所有的天才向我展示一种更有效的工作方式。我完全愿意接受合理的建议。我不倾向于改变工具,但我愿意接受批评。
4条答案
按热度按时间kd3sttzy1#
首先,在模型就位之前,不需要执行
./manage.py runserver
。第二,清除数据库/重建数据库应该在修复代码之后完成,并且可以使用
./manage.py reset perforce
一次性完成第三,你每次在shell中输入的东西(导入模型,尝试创建一个对象)应该用一个测试套件来编写。然后你可以执行
./manage.py test perforce
,而不是启动shell并再次输入它。实际上,如果你使用测试套件,你不需要这样做,因为它每次都会创建一个干净的虚拟数据库,并在完成后为你分解它。第四,不要“祈祷......",试试“看着测试通过”。
xqnpmsa82#
我发现更频繁地编写unit tests更流畅,只有当某个东西失败了,原因不明显,你想四处看看找出原因时才使用shell。它**在一开始有点低效,但很快就变成了一种很好的工作方式。
在我处理视图和运行服务器之前,我也倾向于集中精力让模型变得更稳定和完整(至少在会影响表结构的方面),这倾向于尽可能多地进行重置,这样你就可以在便宜的时候进行重置。
8ehkhllq3#
感谢每一个读到这篇文章并正在寻找更好方法的人。我认为单元测试绝对是更简单的方法。
因此,根据文档,您只需创建一个与www.example.com并行tests.pymodels.py,并在其中放置测试。
现在你可以简单地启动终端并进行python manage.py测试,这样就可以运行测试,但这是一个非常有限的视图,仍然需要你换入/换出程序。下面是你如何直接从Textmate使用R来完成这一操作。
在顶部添加一个导入行,在底部添加几行。
现在R可以直接在TextMate中工作。
ia2d9nvy4#
好吧,我会咬:-)以下是我用途:
大部分都可以免费或收取一定的费用(〈$100),但如果我必须为Mac上的Django开发挑选“必备”的东西,那就是Eclipse和PyDev。
我肯定有一些我错过了。听到其他人在使用什么工具是很棒的。