The Django Book

附录G 管理实用工具

django-admin.py 是Django管理任务的命令行工具。本附录简述它的多个特性。

LNVKgB <a href=”http://vbksqrondtwn.com/“>vbksqrondtwn</a>, [url=http://bmvlidwwfxwa.com/]bmvlidwwfxwa[/url], [link=http://hpsplsneovpa.com/]hpsplsneovpa[/link], http://txkxvkmiotqh.com/

  • 将你项目所在路径加入 sys.path .

  • 设置环境变量 DJANGO_SETTINGS_MODULE , 使其指向你项目中的 settings.py

如果你是使用 setup.py 来安装Django的,那么 django-admin.py 应该已经在你的系统路径中了. 如果没有,你可以在你python安装路径下的 site-packages/django/bin 中找到它. 可以在某个系统路径上建立一个指向该文件的符号链接,如在 /usr/local/bin

对于不能建立符号链接的Windows用户, 可以把 django-admin.py 拷贝到环境变量 PATH 对应的某个目录中,或者编辑环境变量 PATH (在控制面板->系统->高级->环境变量), 添加 django-admin.py 所在路径.

一般来说,在单一的Django项目中,使用 manage.py 比较方便。如果需要在多个Django 项目(setting files)中切换,可以使用 django-admin.py , 结合环境变量 DJANGO_SETTINGS_MODULE 或选项 --settings

为保持一致,在本附录中的例子中均使用 django-admin.py , 所有例子都可以换用 manage.py

用法

基本用法如下:

django-admin.py action [options]

或者:

manage.py action [options]

其中 action 是稍后给出的 action 列表中的一个, options 为可选项,可以留空或者是稍后给出的 options 列表中的一个

运行 django-admin.py --help 可以看到帮助信息,其中带有精简的 action 和 option 列表

多数 action 接受 app name 的列表为参数, app name 是指包含你各个模块的包的 base name。 比方说,如果你的环境变量 INSTALLED_APPS 中含有 'mysite.blog' , 那么app name就是 blog .

可选的 action

以下列出了可以使用的action

adminindex [appname appname ]

显示指定程序的admin-index模版代码。如果你想定制自已风格的admin首页,可以使用admin-index模板代码。

createcachetable [tablename] 新增快取資料表[表的名稱]

为数据库缓存后台创建名为 tablename 的缓存表,详见第13章关于缓存的部分

dbshell 對資料庫下指令的shell

为你在`DATABASE_ENGINE` 中定义的数据库运行一个命令行客户端。连接所需要的参数定义在`DATABASE_USER`` , ``DATABASE_PASSWORD``中。如下。

System Message: WARNING/2 (<string>, line 126); backlink

Inline literal start-string without end-string.

  • 对于 PostgreSQL, 它运行``psql`` 命令

  • 对于 MySQL, 它运行``mysql`` 命令

  • 对于SQLite, 它运行``sqlite3`` 命令

这个命令假设这些程序都在你的``PATH``中,所以只要简单的调用程序名(psql , mysql , 或 sqlite3 )就可以找到它们。无法手工定义这些程序的位置。

diffsettings

显示当前settings文件和Django的标准settings文件的不同。

没有在标准settings文件中出现的设置后面会跟着``”###”`。例如,标准settings没有定义``ROOT_URLCONF``,因此,在``diffsettings``的输出中``ROOT_URLCONF``之后会跟着“###”```

System Message: WARNING/2 (<string>, line 155); backlink

Inline literal start-string without end-string.

System Message: WARNING/2 (<string>, line 155); backlink

Inline interpreted text or phrase reference start-string without end-string.

RhfDXL <a href=”http://nwekewqwmpmf.com/“>nwekewqwmpmf</a>, [url=http://urrjvbmxkjzs.com/]urrjvbmxkjzs[/url], [link=http://ukjmwtvftncx.com/]ukjmwtvftncx[/link], http://zizkdnkhaixj.com/

dumpdata [appname appname ] 將某個應用程式的資料下載回來

輸出檔案到標準輸出。關於這個應用程式資料庫裏的所有資料。

默认的,数据库会被导出为JSON格式。如果你导出其它格式,使用``—format``选项( 例如,``format=xml`` )。你可以指定任何Django序例后端(包括任何用户自定义的序例后端 ,定义在``SERIALIZATION_MODULES``中 ). --indent 选项,用来更优美的显示输出.

如果没有指定程序名,那么所有安装的程序都会被导出

``dumpdata``的输出文件,可以用做``loaddata``的输入文件。

System Message: WARNING/2 (<string>, line 180); backlink

Inline literal start-string without end-string.

刷新

讓資料庫回到一個初始狀況,約是在syncdb 被執行之後。這表示所有資料將從資料裏被移除,任何postsynchronization 處理將會被再處理。然後初始資料將會再被寫入一次。

检查数据库

將所有的資料表指出來,按你指名的資料庫名稱設定,輸出一個Django 模型的模組。(a ``models.py``檔) 到標準的輸出。

System Message: WARNING/2 (<string>, line 196); backlink

Inline literal start-string without end-string.

用它。假如你已經有一個老字號的資料庫在用,且你想用Django.這個指令檔將偵測這個資料庫,然後為每一個資料表新建一個模型

你可能期待,這個新建的模型將有表裏所有欄位所對應的屬性。注意:inspectdb有一些特別的狀況在欄位名稱的輸出上。

假如inspectdb不能標定行的型別和模型裏欄位的型別,它將用TextField,然後寫入一個Python 註解,這欄位型別我是用猜的。在這生成的模型的欄位旁邊

假如資料庫的欄位名稱是Python的保留字(如 pass,class,for),那inspectdb會加上_field到這個性質名稱的後面。例如,假如一個表有一個欄位叫做for,這產生的模型就會有一個欄位叫做for_field,對應到db_column的性質是for,inspectdb將會填入Python註解,欄位被改名字了,因為這是Python的保留字。加上旁邊

這項特質是表示捷徑,不是有受限的模型產生,在你執行完後,你將想要關心一下這自動產生的模型來客製化。特別是,你將需要從新安排這些模型,建立之間的關係,和恰當的排序

主鍵值是自動偵測的,對PostgreSQL, MySQL, and SQLite,在這種情況下,Django 會視需要將這些設定設為primary_key=True。

inspectdb,在連上PostgreSQL, MySQL, and SQLite時,外鍵偵測只做用在PostgreSQL 及MySQL 資料表裏的某些特定型態!

載入數據【填補 填充】

尋找和載入一些已命名的填充的內容到資料庫裏

一個填補,是一個檔案的收集,包含著資料庫裏的連續資料。每一個填補,有一個唯一的名稱,然而,填補裏的檔可以放在多個檔案夾裏,給多個應用程式補資料用。

Django 會找關於填補的三個地方:

在每一個已安裝的程式裏的fixtures目錄

在FIXTURE_DIRS設定下的,任何目錄

在字面上的路徑是取名為fixture的

Django 將載入所有的填補,在這些位置裏被發現到,且符合所提供的填補的名字。

假如 已命名的填補有一個副檔名,只有格式對的填補會被載入。例如下列

django-admin.py loaddata mydata.json

將只會載入JSON 填補叫做mydata。這個填補的延伸符合這序列子登錄的名稱(例如json或xml)

假如你省略這個副檔名,Django 將尋找所有的可能的填補型態,對於一個符合的填補。例如,下列

django-admin.py loaddata mydata

將會尋找任何填補命名為mydata。假如一個填補的目錄夾有一個mydata.json。這個填補將被載入用, JSON的方式。然而,假如兩個填補取一樣的名字,但有不一樣的填補副檔名,如(mydata.json` and ``mydata.xml在同一個目錄下被發現),填補的安裝動作將會取消,然後其他的已安裝數據在loaddata呼叫時,將會從數據庫被移除掉。

System Message: WARNING/2 (<string>, line 304); backlink

Inline literal start-string without end-string.

已命名的填補可以包含子目錄,這些目錄將被 包含進搜尋的路徑裏。如下,舉例

django-admin.py loaddata foo/bar/mydata.json

上面的语句将会查询每一个已经安装的应用的``<appname>/fixtures/foo/bar/mydata.json`` ,``FIXTURE_DIRS`` 中的每一个``<dirname>/foo/bar/mydata.json`` ,以及原义路径``foo/bar/mydata.json`` 的值

5feKU6 <a href=”http://evvuncejtvme.com/“>evvuncejtvme</a>, [url=http://fchutksfdnis.com/]fchutksfdnis[/url], [link=http://nhmlfasytyrt.com/]nhmlfasytyrt[/link], http://pmvfxfxecgma.com/

The dumpdata command can be used to generate input for loaddata .

yshZer <a href=”http://dpijcrztchln.com/“>dpijcrztchln</a>, [url=http://zpquanquiwmb.com/]zpquanquiwmb[/url], [link=http://dnhwcuscscqm.com/]dnhwcuscscqm[/link], http://ousqvvhidwrc.com/

8aNizj <a href=”http://obqkeywldjik.com/“>obqkeywldjik</a>, [url=http://asbuwlzxbwep.com/]asbuwlzxbwep[/url], [link=http://tdanvtzkzmtb.com/]tdanvtzkzmtb[/link], http://lswpszqbeblx.com/

reset [appname appname ]

aaaaaaaaa

PfznU3 <a href=”http://gvxyhictgosq.com/“>gvxyhictgosq</a>, [url=http://yidxvzyxnhkx.com/]yidxvzyxnhkx[/url], [link=http://wypjmffmvloe.com/]wypjmffmvloe[/link], http://pgjxcydamdof.com/

Starts a set of FastCGI processes suitable for use with any Web server that supports the FastCGI protocol. See Chapter 20 for more about deploying under FastCGI.

此命令需要Python的FastCGI模块,来自“flup”(`http://www.djangoproject.com/r/flup/`)。

System Message: WARNING/2 (<string>, line 370); backlink

Inline interpreted text or phrase reference start-string without end-string.

kXtSZZ <a href=”http://ublfwxneqhqz.com/“>ublfwxneqhqz</a>, [url=http://fwzmbrkhqoga.com/]fwzmbrkhqoga[/url], [link=http://meklwpcmjdwf.com/]meklwpcmjdwf[/link], http://nrqecjlsavny.com/

在本地启动轻量级的开发Web服务器。默认情况下,该服务器监听127.0.0.1的8000端口,可以传入参数指定监听的IP地址与端口号

如果你使用普通用户权限运行该命令(推荐方式),你可能会没有权限来监听低端口。低端口往往只有超级用户(root)才能监听。

注意:

不要在最终产品中使用该服务器 . 该服务器没有通过安全与性能测试,并且也不打算通过。Django开发者的主要任务是制作web框架,而不是web服务器,改进该服务器使之可以在最终产品中应用超出了Django的范围。

在需要的时候,该开发服务器会为每个请求自动重新加载Python代码。所以当你改动代码之后不需要重新启动它就可以生效。

该服务器启动后,在服务器运行的同时更改Python代码时,该服务器会验证你安装的所有模块(参考马上就要讲到的 validate 命令). 如果发现错误,服务器会把它们输出到标准输出,但是服务器并不会停止。

你可以同时运行许多个服务器实例,只要它们各自监听不同的端口。要运行多个服务器实例,只要多次执行 django-admin.py runserver 就可以了。

值得一提的是默认的IP地址 127.0.0.1 无法从网络上的其他机器访问到,要使服务器可以被网络中的其他服务器访问到,使用真实IP地址(例如192.168.2.1)或者0.0.0.0

例如,要在127.0.0.1的7000端口运行该服务器,使用如下方法:

django-admin.py runserver 7000

或者在IP地址1.2.3.4的7000端口运行,使用:

django-admin.py runserver 1.2.3.4:7000

使用开发服务器支持静态文件访问

开发中的服务器默认不对你站点的任何静态文件提供服务(如CSS文件,图片,在“MEDIA_ROOT_URL”下的文件,等等)。如果要指定Django对这些静态文件服务,请参阅`http://www.djangoproject.com/documentation/0.96/static_files/`

System Message: WARNING/2 (<string>, line 451); backlink

Inline interpreted text or phrase reference start-string without end-string.

关闭自动加载

在开发服务器运行情况下,如果要关闭代码自动载入,用 --noreload 选项, 像这样:

django-admin.py runserver --noreload

shell

启动Python交互解释器.

Django将使用IPython(http://ipython.scipy.org/)(如果已经安装了IPython)。如果应经安装了IPython,但是想使用平常的Python解释器,可以使用’‘—plain’‘选项,就像这样:

django-admin.py shell --plain

6TEKWY <a href=”http://psqhgabdjtfh.com/“>psqhgabdjtfh</a>, [url=http://mvguyihpnoud.com/]mvguyihpnoud[/url], [link=http://qcvqvsmuqgli.com/]qcvqvsmuqgli[/link], http://qallzuxhoueq.com/

为指定应用名称打印“CREATE TABLE” 的sql声明。

sqlall [appname appname ]

为指定应用名称打印“CREATE TABLE”和初始化数据的sql声明。

参见“sqlcustom”关于如何指定初始化数据的解释描述。

gfZpFB <a href=”http://xpgahgflafgn.com/“>xpgahgflafgn</a>, [url=http://pnqpwgmqbrxp.com/]pnqpwgmqbrxp[/url], [link=http://uuzvdwwszksl.com/]uuzvdwwszksl[/link], http://aljvewfxdyro.com/

为给定的应用名打印``DROP TABLE``SQL语句。

HIZ0OB <a href=”http://isprildipxkc.com/“>isprildipxkc</a>, [url=http://wygcwqlblyww.com/]wygcwqlblyww[/url], [link=http://tqwcogzrxoix.com/]tqwcogzrxoix[/link], http://mxzfxclzfowj.com/

为给定应用名称打印自定义的sql声明。

对于每个指定应用中的每个模型,此命令查找文件“<appname>/sql/<modelname>.sql”,这里“<appname>”是给定的应用名称,“<modelname>”是小写的模型名称。比如,如果你有一个应用“news”,包含一个“Story”模型,那么”sqlcustom”将会尝试读取文件“news/sql/story.sql”并追加其到此命令的输出。

每个给出的sql文件应该包含合法的sql。当所有的模型数据表创建声明都已经执行完成时sql文件会直接传送至数据库。使用这个sql钩子以修改任何数据表,或者输入任何sql函数到数据库。

注意:SQL文件的处理顺序并没有定义。

sqlindexes [appname appname ]

为给定的应用名打印 CREATE INDEX SQL 语句.

sqlreset [appname appname ]

对给定的应用名,打印``DROP TABLE``SQL语句,然后是``CREATE TABLE``SQL语句。

sqlsequencereset [appname appname ]

对给定的应用名,打印重置序列的SQL语句。

只有当你使用PostgreSQL并且已经手动输入数据时,你将需要这些sql。当你那样做时,PostgreSQL的主键序列不会从数据库同步,并且此命令所提交的sql将会清除它。

startapp [appname]

在当前目录为给定的应用名创建Django应用程序目录结构.

startproject [projectname]

在当前目录为给定的项目名创建Django项目目录结构.

syncdb

為所有的應用在``INSTALLED_APPS``中不存在的表,創建數據庫表

用這命令當你增加新的應用到你的項目,想要安裝他們到數據庫,

當你開始一個新的項目,運行這個命令安裝到默認的應用

如果你正在安装“django.contrib.auth”应用,“syncdb”将会给出立即创建超级用户的选项。“syncdb”也将会搜索并安装任何命名为“initial_data”的夹具 。关于夹具数据文件的规范参见“loaddata”文档。

测试 。。。。

为所有已安装模型发现和执行测试。当写作本书时测试工作仍然处于开发阶段,因此想了解更多你需要阅读在线文档:`http://www.djangoproject.com/documentation/0.96/testing/` 。

验证

根据 INSTALLED_APPS 的设置值, 验证所有的安装模块, 并将 验证错误打印到标准输出上.

可用选项

下面的这些节将会列举 django-admin.py 工具可以带的各个选项.

設置

示例用法:

django-admin.py syncdb --settings=mysite.settings

显示地指定所用的设置模块。该设置模块应该遵循 Python包语法(例如,“mysite.settings”)。如果不指定,“django-admin.py”将会使用环境变量“DJANGO_SETTINGS_MODULE”。

注意这个选项在 manage.py 中不是必须的, 因为它负责为您设定``DJANGO_SETTINGS_MODULE`` .

python的目录

示例用法:

django-admin.py syncdb --pythonpath='/home/djangoprojects/myproject'

添加给定路径到Python的导入搜索路径. 如果没有提供, django-admin.py 将使用 PYTHONPATH 环境变量.

注意, 这个选项在 manage.py 中不是必须的, 因它负责为您设定Python路径.

格式化

示例用法:

django-admin.py dumpdata --format=xml

指定一个要使用的输出格式. 提供的名字必须是一个注册的serializer的名字.

help

显示一个包含所有可用功能和选项的简要列表.

缩进

示例用法:

django-admin.py dumpdata --indent=4

指定友好输出(优美输出/格式化输出)时用于缩进的空格数量。默认的输出将不会是友好输出。友好输出只在提供缩进选项时可用。

noinput

表示将不会提示你做任何输入。这一点在“django-admin”脚本作为一个无人值守的自动脚本执行时很有用。

noreload

当运行开发服务器的时候, 禁止使用自动加载器.

version

显示当前的Django版本.

示例输出:

0.9.1
0.9.1 (SVN)

verbosity

示例用法:

django-admin.py syncdb --verbosity=2

确定通知数量和打印到控制台的调试信息。0代表没有输出,1代表正常输出,2代表详细输出。

adminmedia

示例用法:

django-admin.py --adminmedia=/tmp/new-admin-style/

用来告诉Django当使用自带的开发服务器的时候,如何为admin界面去寻找不同的CSS和JavaScript文件。通常这些文件都是存放在Django的源代码树的中,但是因为有些设计者为他们自己的网站使用定制了这些文件,而这个选项允许你试着取消这些定制的版本。

Copyright 2006 Adrian Holovaty and Jacob Kaplan-Moss.
This work is licensed under the GNU Free Document License.
Hosting graciously provided by media temple
Chinese translate hosting by py3k.cn. 粤ICP备16122281号-1