第二章:入门
https://docs.djangoproject.com/en/1.6/intro/reusable-apps/#your-project-and-your-reusable-app
因为Django就是纯Python代码,它可以运行在任何Python可以运行的环境,甚至是手机上! 但是这章只提及Django安装的通用脚本。 我们假设你把它安装在桌面/笔记本电脑或服务器。
百度首页|登录注册 新闻网页贴吧知道音乐图片视频地图百科文库 帮助 首页分类频道特色百科玩转百科百科用户百科校园百科合作用知识记录我们的地球 赢大奖 手机百科个人中心 切换到宽屏 164 djangobook 编辑 Django 是新一代 Web框架 中非常出色的成员。那么 Web 框架这个术语的确切含义到底是什么呢?要回答这个问题,让我们来看看通过编写标准的CGI程序来开发Web应用,这在大约1998年的时候非常流行。编写CGI Web应用时,你需要自己处理所有的操作,就像你想烤面包,但是都需要自己生火一样。下面是实例,一个简单的CGI脚本,用Python写的,读取数据库并显示最新发布的十本书。 #!/usr/bin/python import MySQLdb print "Content-Type: text/html" print print "<html><head><title>Books</title></head>" print "<body>" print "<h1>Books</h1>" print "<ul>" connection = MySQLdb.connect(user='me', passwd='letmein', db='my_db') cursor = connection.cursor() cursor.execute("SELECT name FROM books ORDER BY pub_date DESC LIMIT 10") for row in cursor.fetchall(): print "<li>%s</li>" % row[0] print "</ul>" print "</body></html>" connection.close() 1代码十分简单。首先,根据CGI的要求输出一行Content-Type,接下来是一个空行。再接下来是一些HTML的起始标签,然后连接数据库并执行一些查询操作,获取最新的十本书。遍历这些书,同时生成一个 HTML的无序序列。最后,输出HTML的结束标签并且关闭数据库连接。 像这样的一次性的动态页面,从头写起的方法并非一定不好。其中一点:这些代码简单易懂,就算是一个初起步的开发者都能读明白这16行的Python代码,而且这些代码从头到尾做了什么都能了解得一清二楚。不需要学习额外的背景知识,没有额外的代码需要去了解。同样,也易于部署这16行代码,只需要将它保存为一个 latestbooks.cgi 的文件,上传到Web服务器上,通过浏览器访问即可。 但是,一个Web应用要远复杂于以上情况,这种方法很快会失效,而且你将会要面对很多问题: 当多个动态页面需要同时连接数据库时,将会发生什么?当然,连接数据库的代码不应该同时存在于各个独立的CGI脚本中,所以最踏实的做法是把这些代码重新组织到一个公共函数里面。 一个开发人员 确实 需要去关注如何输出Content-Type以及完成所有操作后去关闭数据库么?此类问题只会降低开发人员的工作效率,增加犯错误的几率。那些初始化和释放相关的工作应该交给一些通用的框架来完成。1 如果这样的代码被重用到一个复合的环境中会发生什么?每个页面都分别对应独立的数据库和密码吗?从这点看来,就需要一些环境相关的配置文件。 如果一个Web设计师,完全没有Python开发经验,但是又需要重新设计页面的话,又将发生什么呢?理想的情况是,页面显示的逻辑与从数据库中读取书本纪录分隔开,这样 Web设计师的重新设计不会影响到之前的业务逻辑。 以上正是Web框架致力于解决的问题。Web框架为应用程序提供了一套程序框架,这样你可以专注于编写清晰、易维护的代码,而无需从头做起。简单来说,这就是Django所能做的。 MVC 设计模式让我们来研究一个简单的例子,通过该实例,你可以分辨出,通过Web框架来实现的功能与之前的方式有何不同。下面就是通过使用Django来完成以上功能的例子: # models.py (the database tables) from django.db import models class Book(models.Model): name = models.CharField(maxlength=50) pub_date = models.DateField() # views.py (the business logic) from django.shortcuts import render_to_response from models import Book def latest_books(request): book_list = Book.objects.order_by('-pub_date')
往后,在第12章,我们将讨论如何部署Django到一个生产站点。
Python 安装
Python版本
核心Django框架可以工作在2.3至2.6(包括2.3和2.6)之间的任何Python版本。 Django的可选GIS(地理信息系统)支持需要Python 2.4到2.6。
如果你不确定要安装Python的什么版本,并且你完全拿不定主意的话,那就选2.x系列的最新版本吧。 版本2.6。 虽然Django在2.3至2.6版之间的任意Python版本下都一样运行得很好,但是新版本的Python提供了一些你可能比较想应用在你的程序里的,更加丰富和额外的语言特性。 另外,某些你可能要用到的Django第三方插件会要求比Python 2.3更新的版本,所以使用比较新的Python版本会让你有更多选择。
Django和 Python 3.0
在写作本书的时候,Python3.0已经发布,但Django暂时还不支持。 Python3.0这个语言本身引入了大量不向后兼容的改变,因此,我们预期大多数主要的Python库和框架将花几年才能衔接,包括Django。
Being a Python Web framework, Django requires Python. It works with Python 2.7, 3.2, 3.3, or 3.4 ======================= 截至目前2015-02-27,几乎是支持所有主流的版本了吧?
Django早已支持 python 3!但是django book这个手册没更新,初学者注意!官网还推荐使用 python3,如下:Django is available open-source under the BSD license. We recommend using the latest version of Python 3, but you can also use Python 2.7. See the FAQ for the Python versions supported by each version of Django.
如果你是个Python新手并且正迷茫于到底是学习Python 2.x还是Python 3.x的话,我们建议你选择Python 2.x。
如果使用的是 Linux 或 Mac OS X ,系统可能已经预装了 Python 。在命令提示符下 (或 OS X 的终端中) 输入 python ,如果看到如下信息,说明 Python 已经装好了: 在命令行窗口中输入python (或是在OS X的程序/工具/终端中)。 如果你看到这样的信息,说明 python 已经安装好了.
Python 2.4.1 (#2, Mar 31 2005, 00:05:10)
[GCC 3.3 20030304 (Apple Computer, Inc. build 1666)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
否则, 你需要下载并安装Python. 它既快速又方便,而详细说明可参考http://www.python.org/download/
安装 Django
任何时候,都有两个不同版本的Django供您选择。 最新的官方发行版和有风险的主干版本。 安装的版本取决于您的优先选择。 你需要一个稳定的通过测试的Django,或是你想要包括最新功能的版本,也许你可对Django本身作贡献,而把稳定作为代价?
我们推荐选定一个正式发布版本,但重要的是了解到主干开发版本的存在,因为在文档和社区成员中你会发现它被提到。
安装官方发布版
官方发布的版本带有一个版本号,例如1.0.3或1.1,而最新版本总是可以在http://www.djangoproject.com/download/找到。
如果我买书,看到这里我就丢垃圾桶了。python真身就算是小规模使用,现在出问题网络解决都很麻烦。这里会出现各种使用的问题,而作者缺没有提供任何解决方法,甚至连解决的方式途径都没有提供。
如果您在用Linux系统,其中包括Django的包,使用默认的版本是个好主意。 这样,你将会通过系统的包管理得到安全的升级。
如果你的系统没有自带Django,你可以自己下载然后安装框架。 首先,下载名字类似于Django-1.0.2-final.tar.gz压缩文件。(下载到哪里无所谓,安装程序会把Django文件放到正确的地方。)解压缩之后运行setup.py install,像操作大多数Python库一样。
可以解压缩在任何地方,因为执行python setup.py install后会把django包安装在python目录下。而这里的setup.py文件正是位于解压缩后的django安装文件夹中,也就是先cd进入到这个解压缩后的位置再执行python setup.py install
以下是如何在Unix系统上安装的方法:
tar xzvf Django-*.tar.gz。cd Django-*。sudo python setup.py install。
Windows系统上,推荐使用7-Zip(http://www.djangoproject.com/r/7zip/)来解压缩.tar.gz文件。 解压缩完成后,以管理员权限启动一个DOS Shell(命令提示符),然后在名字以Django-开始的目录里执行如下命令:
通过实践 我觉得应该是进入python的安装目录执行: python Django安装路径\ setup.py install 而不是去Django的目录执行 python setup.py install
“周裕波 2010-04-18 01:23:22 通过实践 我觉得应该是进入python的安装目录执行: python Django安装路径\ setup.py install 而不是去Django的目录执行 python setup.py install” 我没试过你的方法,不过在Django的目录执行python setup.py install是完全可以的。不知道你的方法有什么特殊之处。
dos里进入d:\python26 然后运行 python f:\study\django\setup.py install 我是这样运行的。django放在f:\study目录下。python装在d盘。 进入django目录 python setup.py install 没反应。
应该是python安装的时候 注册有问题吧,在Django目录下运行提示找不到python命令,我将python的目录加到环境变量里还是不行,,不知怎么回事,,最后直接 在python目录下运行的
这条windows下安装命令的使用条件:python的安装目录在Path环境变量里。如python的安装目录为C:/python27,需要在控制面板\系统和安全\系统\环境变量\Path中加入这个路径。
我的XP环境下,DOS命令进入解压后的Django目录,如:D:\Django-1.5.1 执行“python setup.py install”安装成功! 不知道WIN7下是否是这样
win7 安装命令是:管理员权限下运行cmd,cd到python安装路径,执行:python django解压缩路径\setup.py install 添加Path环境变量,在Django目录下执行,试了,不成功
python setup.py install
如果你很好奇: Django将被安装到你的Python安装目录的site-package 目录(Python从该目录寻找第三方库)。 通常情况下,这个目录在/usr/lib/python2.4/site-packages。
查看当前Python的site-packages目录: from distutils.sysconfig import get_python_lib print(get_python_lib())
安装Trunk版本
最新最好的django的开发版本称为trunk,可以从django的subversion处获得。 如果你想尝鲜,或者想为django贡献代码,那么你应当安装这个版本。
Subversion 是一种与 CVS 类似的免费开源版本控制系统,Django 开发团队使用它管理 Django 代码库的更新。 你可以使用 Subversion 客户端获取最新的 Django 源代码,并可任何时候使用 local checkout 更新本地 Django 代码的版本,以获取 Django 开发者所做的最近更新和改进。
请记住,即使是使用trunk版本,也是有保障的。 因为很多django的开发者在正式网站上就是用的trunk版本,他们会保证trunk版本的稳定性。
遵循以下步骤以获取最新的 Django 主流代码:
确保安装了 Subversion 客户端。 可以从 http://subversion.tigris.org/ 免费下载该软件,并从 http://svnbook.red-bean.com/ 获取出色的文档。
(如果你在使用Mac OS X 10.5或者更新的版本,你很走运,Subversion应该就可以安装Django。 你可以在终端上输入svn --version来验证。
使用 svn co http://code.djangoproject.com/svn/django/trunk djtrunk 命令查看主体代码。
找到你的python的site-packages目录。 一般为/usr/lib/python2.4/site-packages,如果你不确定,可以输入如下命令:
python -c 'import sys, pprint; pprint.pprint(sys.path)'
上面的结果会包含site-packages的目录
在site-packages目录下,创建一个文件
django.pth,编辑这个文件,包含djtrunk目录的全路径 利润,此文件包含如下行:
/home/me/code/djtrunk
- 将
djtrunk/django/bin加入系统变量 PATH 中。该目录中包含一些像django-admin.py之类的管理工具。 此目录包含管理工具,例如:django-admin.py
提示:
如果之前没有接触过 .pth 文件,你可以从 http://www.djangoproject.com/r/python/site-module/ 中获取更多相关知识。
从 Subversion 完成下载并执行了前述步骤后,就没有必要再执行 python setup.py install 了,你刚才已经手动完成了安装!
由于 Django 主干代码的更新经常包括 bug 修正和特性添加,如果真的着迷的话,你可能每隔一小段时间就想更新一次。 在 djtrunk 目录下运行 svn update 命令即可进行更新。 当你使用这个命令时,Subversion 会联络 http://code.djangoproject.com ,判断代码是否有更新,然后把上次更新以来的所有变动应用到本地代码。 就这么简单。
最后,如果你使用trunk,你要知道使用的是哪个trunk版本。 如果你去社区寻求帮助,或是为Django框架提供改进,知道你使用的版本号是非常重要的。 因此,当你到社区去求助,或者为 django 提供改进意见的时候,请时刻记住说明你正在使用的 django 的版本号。 如何知道你正在使用的 django 的版本号呢?进入djtrunk 目录,然后键入 svn info ,在输出信息中查看 Revision: (版本:) 后跟的数字。 Django在每次更新后,版本号都是递增的,无论是修复Bug、增加特性、改进文档或者是其他。 在一些Django社区中,版本号甚至成为了一种荣誉的象征,我从[写上非常低的版本号]开始就已经使用Djano了。
测试Django安装
让我们花点时间去测试 Django 是否安装成功,并工作良好。同时也可以了解到一些明确的安装后的反馈信息。 在Shell中,更换到另外一个目录(不是包含Django的目录),然后输入python来打开Python的交互解释器。如果安装成功,你应该可以导入django模块了:
>>> import django
>>> django.VERSION
(1, 1, 0, final', 1)
交互解释器示例
Python 交互解释器是命令行窗口的程序,通过它可以交互式地编写 Python 程序。 要启动它只需运行 python 命令。
我们在交互解释器中演示Python示例将贯穿整本书。 你可以用三个大于号 (>>> )来分辨出示例,三个大于号就表示交互提示符。 如果你要从本书中拷贝示例,请不要拷贝提示符。
在交互式解释器中,多行声明用三个点 (...)来填补。 例如:
>>> print """This is a
... string that spans
... three lines."""
This is a
string that spans
three lines.
>>> def my_function(value):
... print value
>>> my_function('hello')
hello
>>> def my_function(value): ... print value 前面的三个点写上报错,本来前面是一个tab键。大家有没有遇到这样的情况,书上的例子是不是有些问题,我的python版本是2.7
此处print后面应该加上括号,不然会出现错误 SyntaxError: Missing parentheses in call to 'print'. Did you mean print("""This is a string that spans three lines.""")?
这三个在新行开始插入的点,是Python Shell自行加入的,不属于我们的输入。 但是包含它们是为了追求解释器的正确输出。 如果你拷贝我们的示例去运行,千万别拷贝这些点。
安装数据库
这会儿,你可以使用django写web应用了,因为django只要求python正确安装后就可以跑起来了。 不过,当你想开发一个数据库驱动的web站点时,你应当需要配置一个数据库服务器。
如果你只想玩一下,可以不配置数据库,直接跳到 开始一个project 部分去,不过你要注意本书的例子都是假设你配置好了一个正常工作的数据库。
Django支持四种数据库:
- PostgreSQL (http://www.postgresql.org/)
- SQLite 3 (http://www.sqlite.org/)
- MySQL (http://www.mysql.com/)
- Oracle (http://www.oracle.com/)
大部分情况下,这四种数据库都会和Django框架很好的工作。 (一个值得注意的例外是Django的可选GIS支持,它为PostgreSQL提供了强大的功能。)如果你不准备使用一些老旧系统,而且可以自由的选择数据库后端,我们推荐你使用PostgreSQL,它在成本、特性、速度和稳定性方面都做的比较平衡。
设置数据库只需要两步:
- 首先,你需要安装和配置数据库服务器本身。 这个过程超出了本书的内容,不过这四种数据库后端在它的网站上都有丰富的文档说明。 如果你使用的是共享主机,可能它们已经为你设置好了。
- 其次,你需要为你的服务器后端安装必要的Python库。 这是一些允许Python连接数据库的第三方代码。 我们会在之后的章节简要介绍,对于某一种数据库来说,它单独需要安装的东西。
如果你只是玩一下,不想安装数据库服务,那么可以考虑使用SQLite。 如果你用python2.5或更高版本的话,SQLite是唯一一个被支持的且不需要以上安装步骤的数据库。 它仅对你的文件系统中的单一文件读写数据,并且Python2.5和以后版本内建了对它的支持。
在Windows上,取得数据库驱动程序可能会令人沮丧。 如果你急着用它,我们建议你使用python2.5。
在 Django 中使用 PostgreSQL
使用 PostgreSQL 的话,你需要从 http://www.djangoproject.com/r/python-pgsql/ 下载 psycopg 这个开发包。 我们建议使用psycopg2,因为它是新的,开发比较积极,且更容易安装。 留意你所用的是 版本 1 还是 2,稍后你会需要这项信息。
如果在 Windows 平台上使用 PostgreSQL,可以从 http://www.djangoproject.com/r/python-pgsql/windows/ 获取预编译的 psycopg 开发包的二进制文件。
如果你在用Linux,检查你的发行版的软件包管理系统是否提供了一套叫做python-psycopg2,psycopg2-python,python-postgresql这类名字的包。
在 Django 中使用 SQLite 3
如果你正在使用Python 2.5版本或者更高,那么你很幸运: 不要求安装特定的数据库,因为Python支持和SQLite进行通信。 向前跳到下一节。
如果你用的是Python2.4或更早的版本,你需要 SQLite 3而不是版本2,这个可从http://www.djangoproject.com/r/sqlite/pysqlitehttp://www.djangoproject.com/r/python-sqlite/ 确认一下你的pysqlite版本是2.0.3或者更高。
在 Windows 平台上,可以跳过单独的 SQLite 二进制包安装工作,因为它们已被静态链接到 pysqlite 二进制开发包中。
如果你在用Linux,检查你的发行版的软件包管理系统是否提供了一套叫做python-sqlite3,sqlite-python,pysqlite这类名字的包。
在 Django 中使用 MySQL
django要求MySQL4.0或更高的版本。 3.X 版本不支持嵌套子查询和一些其它相当标准的SQL语句。
你还需要从 http://www.djangoproject.com/r/python-mysql/ 下载安装 MySQLdb 。
os x ei captain系统需要先装好python和mysql,可以是实用easy_install mysql-python安装,如果报mysql_config not found,可以在~/.bash_profile中加入 export PATH=/usr/local/mysql/bin:$PATH export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/ 然后source ~/.bash_profile,再安装即可。
现在python+Django连接MySQL使用的模块是 pymysql,而且还要在Django工程的init.py文件添加上 import pymysql pymysql.install_as_MySQLdb() 才能正常连接!
window系统64位 Python2.7 安装 MySQLdb (pip easy_install 都不行) http://www.codegood.com/archives/129(下载exe直接双击安装)
如果你正在使用Linux,检查下你系统的包管理器是否提供了叫做python-mysql,python-mysqldb,myspl-python或者相似的包。
在Django中使用Oracle数据库
django需要Oracle9i或更高版本。
如果你用Oracle,你需要安装cx_Oracle库,可以从http://cx-oracle.sourceforge.net/获得。 要用4.3.1或更高版本,但要避开5.0,这是因为这个版本的驱动有bug。
使用无数据库支持的 Django
正如之前提及过的,Django 并不是非得要数据库才可以运行。 如果只用它提供一些不涉及数据库的动态页面服务,也同样可以完美运行。
尽管如此,还是要记住:
Django 所捆绑的一些附加工具 一定 需要数据库,因此如果选择不使用数据库,你将不能使用那些功能。 (我们将在本书中自始至终强调这些功能)
开始一个项目
项目 是 Django 实例的一系列设置的集合,它包括数据库配置、Django 特定选项以及应用程序的特定设置。
如果第一次使用 Django,必须进行一些初始化设置工作。 新建一个工作目录,例如 /home/username/djcode/ ,然后进入该目录。
有过 PHP 编程背景的话,你可能习惯于将代码都放在 Web 服务器的文档根目录 (例如 /var/www 这样的地方)。 而在 Django 中,把任何Python代码和web server的文档根(root)放在一起并不是一个好主意。因为这样做有使人能通过网路看到你原代码的风险. 那就太糟了。
把任何Python代码和web server的文档根(root)放在一起并不是一个好主意。 建议改为: 将Python源码放在Web Server的根目录不是个好主意。
php代码在web目录中被访问时会由php进程执行,并将执行时输出的内容输出到web服务器所以一般来说也不会有太大的安全问题。但是python就没有这个过程,所以不应该放到web目录中
把代码放置在文档根目录 之外 的某些目录中。
转到你创建的目录,运行命令django-admin.py startproject mysite。这样会在你的当前目录下创建一个目录。mysite
after 运行命令, should be "django-admin.ph startproject mysite" and then is 这样会 .....
按照上述方式安装,可以在这里找到这个程序。 ./usr/local/python-2.7/bin/django-admin.py 需要自己把上面的目录加到PATH变量中。
我用的是Python 2.7.2和Django-1.4.3.tar.gz版本。折腾了半天,终于生成了mysite目录(我是在windows系统下配置的)。方法:在DOS窗口中进入"D:\Python\Lib\site-packages\django\bin"路径下,然后输入"python django-admin.py startproject mysite"命令,即可生成一个mysite文件夹(包含manage.py文件和一个同名的mysite文件夹,二级mysite文件夹下包括__init__.py,settings.py,urls.py和wsgi.py文件)。(注:我的Python安装目录是D:\Python)。
Window7环境,使用命令得用全路径 python pythonpath/Scripts/django-admin.py startproject mysite
http://stackoverflow.com/questions/2870262/django-admin-py-startproject-mysite-not-working-well-on-windows-7?lq=1 关于python脚本在windows命令行下不能识别参数的问题,以上链接给出了解答,是python的bug,需要通过修改注册表来解决,汗一个。。。
我试了好多次,最后成功的办法是:把django-admin加入path,在Terminal中直接运行django-admin.py startproject mysite
安装环境是win7/python2.7.x/django 1.5.1。这一步是通过把django-admin.py的目录添加到Path,然后在目标目录下运行命令完成操作的。
同楼上。第一步把D:\Python27;D:\Python27\Lib\site-packages\django\bin 这个目录添加到path。第二步在项目目录下运行这条语句,【是在dos命令符下,不是>>>这个】
其实这里添加的PATH是X:\Python27\Scripts里面的django-admin.py,然后启动的时候不用加上py,如(django-admin startproject mysite)我就是这么干的(我在pathtext变量里也添加了.py和.pyc了!
python C:\Python27\Lib\site-packages\django\bin\django-admin.py startproject mysite winXP我用的这个命令成功建出了目录
python C:\Python27\Lib\site-packages\django\bin\django-admin.py startproject mysite 亲测可用
添加django的环境变量即可直接在自己新建的djcode中使用命令:django-adimi.py startproject mysite。添加的环境变量如下:D:\python27\Lib\site-packages\django\bin(本人python安装在D:\python27中)
The "django-admin" couldn't work after finishing django installation. I suggestion that you type "sudo apt-get install python-django" in Teminal firstly, Ubuntu. Then it will work.
django-admin.py startproject mysite反而无法找到django-admin命令,倒是django-admin startproject mysite能成功运行
1. 环境变量Py27 = D:\Python27 2. 环境变量django = D:\Python27\Lib\site-packages\django 3. Path 中添加 %Py27%;%django%\bin; 4. cmd 进入任意文件夹路径。输入命令 D:\djangoCode>python %django%\bin\django-admin.py startproject mysite
python: can't open file 'django-admin.py': [Errno 2] No such file or directory 需要拷贝一份django-admin.py到自定义文件夹 = =
.pyenv/versions/2.7.5/lib/python2.7/site-packages/django/bin/django-admin.py startproject mysite (ubuntu 如果路径没有)
mac下运行django-admin startproject mysite 不用用django-admin.py否则会进入vi在你目录下创建一个Django-admin.py
mac请运行django-admin startproject mysite 不要用django-admin.py否则会进入vi在你目录下创建一个Django-admin.py
Win7,Python2.7,django版本1.8.5,添加PATH是C:\Python27\Lib\site-packages\Django-1.8.5-py2.7.egg\django\bin,然后直接在dos窗口敲django-admin startproject mysite,没有py才成功的
注意
如果用的是 setup.py 工具安装的 Django , django-admin.py 应该已被加入了系统路径中。
xp下,setup.py安装的django,不会自动修改path. 需手动添加django下的bin目录到path中,才能直接在cmd 下访问django-admin.py
path 添加后要确认一下django bin是否在path中生效了 检验方式为:在doc 窗口中输入path,检查你添加的django bin目录是否正确,若不正确,需注销或重启计算机使之生效才可以
如果你使用一个trunk版本,你会在 djtrunk/django/bin 下发现 django-admin.py 。你将来会常用到django-admin.py,考虑把它加到你的系统路径中去比较好。 在Unix中, 你也可以用来自/usr/local/bin 的符号连接, 用一个命令, 诸如sudo ln -s /path/to/django/bin/django-admin.py /usr/local/bin/django-admin.py . 在Windows中, 你需要修改你的 PATH 环境变量.
ln -s ~/pyenv/versions/2.7.5/lib/python2.7/site-packages/django/bin/django-admin.py /usr/local/bin/django-admin.py
如果你的django是从linux发行版中安装的,那么,常会被django-admin.py替代。django-admin
如果你的django是从linux发行版中安装的,那么,常会被django-admin.py替代。django-admin 改为 如果你的django是从linux发行版中安装的,那么django-admin.py常会被django-admin替代。 (mint13 中是这样的)
如果在运行时,你看到权限拒绝的提示,你应当修改这个文件的权限。django-admin.py startproject 为此, 键入 cd /usr/local/bin转到django-admin.py所在的目录,运行命令chmod +x django-admin.py
startproject 命令创建一个目录,包含4个文件:
1.5.1 版本 mysite目录下 |---manage.py |---mysite | |---settings.py | |---__init__.py | |---wsgi.py | |---urls.py
mysite/
__init__.py
manage.py
settings.py
urls.py
django 1.4.0下是: mysite/ manager.py mysite/ __init__.py settings.py urls.py wsgi.py
这里我看到的是mysite文件夹里有manage.py和一个同名mysite文件夹(里面有四个文件__init__.py、settings.py、urls.py和wsgi.py)
目前1.5.4 startproject后 除了manage.py 其他的文件会放下和project同名的文件夹中 mysite/ manager.py mysite/ __init__.py settings.py urls.py wsgi.py
文件如下:
__init__.py:让 Python 把该目录当成一个开发包 (即一组模块)所需的文件。 这是一个空文件,一般你不需要修改它。manage.py:一种命令行工具,允许你以多种方式与该 Django 项目进行交互。 键入python manage.py help,看一下它能做什么。 你应当不需要编辑这个文件;在这个目录下生成它纯是为了方便。settings.py:该 Django 项目的设置或配置。 查看并理解这个文件中可用的设置类型及其默认值。urls.py:Django项目的URL设置。 可视其为你的django网站的目录。 目前,它是空的。
Available subcommands: cleanup compilemessages createcachetable createsuperuser dbshell diffsettings dumpdata flush inspectdb loaddata makemessages reset runfcgi runserver shell sql sqlall sqlclear sqlcustom sqlflush sqlindexes sqlinitialdata sqlreset sqlsequencereset startapp syncdb test testserver validate
对于 Django 2.0 来说. 多了一个 wsgi.py 文件, wsgi 全称是 WebServerGatewayInterface(Web服务器网关接口),然后 manage.py 也移到了外层目录了
为什么输入Python manage.py help 会显示Note that only Django core commands are listed as settings are not properly configured (error: No module named 'firstsite').呀?firstsite是个什么模块呀?pip也没法下载呀
尽管这些的文件很小,但这些文件已经构成了一个可运行的Django应用。
运行开发服务器
为了安装后更多的体验,让我们运行一下django开发服务器看看我们的准系统。
django开发服务是可用在开发期间的,一个内建的,轻量的web服务。 我们提供这个服务器是为了让你快速开发站点,也就是说在准备发布产品之前,无需进行产品级 Web 服务器(比如 Apache)的配置工作。 开发服务器监测你的代码并自动加载它,这样你会很容易修改代码而不用重启动服务。
如果你还没启动服务器的话,请切换到你的项目目录里 (cd mysite ),运行下面的命令:
centos6.2中manage.py是在: [root@localhost /]# cd /home/Django-1.4.3/django/bin/mysite/ [root@localhost mysite]# ls manage.py mysite [root@localhost mysite]# cd mysite/ [root@localhost mysite]# ls __init__.py settings.py urls.py wsgi.py
这里,如果是windows下,需要进入mysite目录, 然后再执行“manage.py runserver" 否则会报“python: can't open file 'manage.py': [Errno 2] No such file or directory”错误!
第二次python manage.py runserver时,为什么会CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.啊?
python manage.py runserver
你会看到些像这样的
Validating models...
0 errors found.
Django version 1.0, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
这将会在端口8000启动一个本地服务器, 并且只能从你的这台电脑连接和访问。 既然服务器已经运行起来了,现在用网页浏览器访问 http://127.0.0.1:8000/ 。 你应该可以看到一个令人赏心悦目的淡蓝色Django欢迎页面。 它开始工作了。
是8000还是8080端口完全看你自己的操作系统的设置。也可以通过启动服务时添加端口设置,如 python manage.py runserver 8080
在进一步学习之前, 一个重要的,关于开发网络服务器的提示很值得一说。 虽然 django 自带的这个 web 服务器对于开发很方便,但是,千万不要在正式的应用布署环境中使用它。 在同一时间,该服务器只能可靠地处理一次单个请求,并且没有进行任何类型的安全审计。 发布站点前,请参阅第 20 章了解如何部署 Django 。
更改这个 Development Server 的主机地址或端口
默认情况下, runserver 命令在 8000 端口启动开发服务器,且仅监听本地连接。 要想要更改服务器端口的话,可将端口作为命令行参数传入:
python manage.py runserver 8080
通过指定一个 IP 地址,你可以告诉服务器–允许非本地连接访问。 如果你想和其他开发人员共享同一开发站点的话,该功能特别有用。 0.0.0.0 这个 IP 地址,告诉服务器去侦听任意的网络接口。
python manage.py runserver 0.0.0.0:8000
完成这些设置后,你本地网络中的其它计算机就可以在浏览器中访问你的 IP 地址了。比如: http://192.168.1.103:8000/ . (注意,你将需要校阅一下你的网络配置来决定你在本地网络中的IP 地址) Unix用户可以在命令提示符中输入ifconfig来获取以上信息。 使用Windows的用户,请尝试使用 ipconfig 命令。
接下来做什么?
好了,你已经安装好所需的一切, 并且开发服务器也运行起来了,你已经准备好继续 学习基础知识–用Django伺候网頁 这一章的内容了。
看了原版,原句是you’re ready to learn the basics of serving Web pages with Django. 翻译成django网页服务比较好吧
you’re ready to learn the basics of serving Web pages with Django. 现在你已经完成使用Django提供基本的web页面服务(的设置了)