该系列的博客都是按照这个教程上面的内容整理总结出来的,主要是为了方便自己复习和巩固的。http://www.kancloud.cn/wizardforcel/django-chinese-docs-18/98847。该教程确实不错。
1、创建一个django项目
1)确保你的环境是安装了python和django,前面有介绍python的django的安装。cmd进入命令行中,使用 cd 命令进入你想存储代码所在的目录,然后运行以下命令:
django-admin.py startproject mysite
这将在当前目录创建一个 mysite 目录,目录结构如下:
mysite/ manage.py mysite/ __init__.py settings.py urls.py wsgi.py
这些文件是:
- 外层 mysite/ 目录只是你项目的一个容器。对于 Django 来说该目录名并不重要; 你可以重命名为你喜欢的。
- manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。 你可以在 django-admin.py and manage.py 中查看关于 manage.py 所有的细节。
- 内层 mysite/ 目录是你项目中的实际 Python 包。该目录名就是 Python 包名,通过它你可以导入它里面的任何东西。 (e.g. import mysite.settings).
- mysite/init.py: 一个空文件,告诉 Python 该目录是一个 Python 包。(如果你是 Python 新手,请查看官方文档了解 关于包的更多内容 。)
- mysite/settings.py: 该 Django 项目的设置/配置。请查看 Django settings 将会告诉你如何设置。
- mysite/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站“目录”。请查看 URL dispatcher 可以获取更多有关 URL 的信息。
- mysite/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。请查看 How to deploy with WSGI 获取更多细节。
2)要创建你的应用,请确认与 manage.py 文件在同一的目录下并输入以下命令:
python manage.py startapp polls
项目 ( Projects ) vs. 应用 ( apps )
项目与应用之间有什么不同之处?应用是一个提供功能的 Web 应用 – 例如:一个博客系统、一个公共记录的数据库或者一个简单的投票系统。 项目是针对一个特定的 Web 网站相关的配置和其应用的组合。一个项目可以包含多个应用。一个应用可以在多个项目中使用。
这将创建一个 polls 应用(app),其展开的样子如下所示:
polls/ __init__.py models.py tests.py views.py
此目录结构就是投票系统应用。
在这简单的投票应用中,我们将创建两个模型: Poll 和 Choice。
Poll 有问题和发布日期两个字段。Choice
有两个字段:文本内容和投票数。每一个 Choice 都与一个 Poll 关联。
这些概念都由简单的 Python 类来表现。编辑 polls/models.py 文件后如下所示:
from django.db import models class Poll(models.Model): question = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') class Choice(models.Model): poll = models.ForeignKey(Poll) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0)
3)将我们新建的应用(polls)添加到 settings.py 中的 INSTALLED_APPS中,也就是告诉Django有这么一个应用。
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'polls',
)
现在 Django 已经知道包含了 polls 应用。让我们运行如下命令,我们来同步一下数据库.我这里用的是mysql,所以还需要在settings.py中进行修改:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', // 'USER':'root', //mysql数据库用户 'PASSWORD':'root', //密码 'NAME':'mysite', //数据库名,这里可以手动去创建一个数据库。 'HOST':'127.0.0.1' } }
执行下面命令同步数据库:
python manage.py syncdb
djang 1.7以后使用下面命令
python manage.py makemigrations
python manage.py migrate
运行上面命令的时候命令行会有一个提示叫你创建一个超级用户。按照提示写一个用户和密码。
到这里我们就成功创建了一个django项目,并且在数据库中也创建了刚刚我们所建立的模型对应的数据库对应的表结构。
2.django中对应的部分api,详细的可以参照官方文档,下面仅演示部分api的功能:
现在,我们进入 Python 的交互式 shell 中玩弄 Django 提供给你的 API 。要调用 Python sell
python manage.py shell >>>from polls.models import Poll, Choice # 数据库中还没有 polls >>> Poll.objects.all() []
# 创建一个新 Poll 。 >>> from django.utils import timezone >>> p = Poll(question="What's new?", pub_date=timezone.now())
# 保存对象到数据库中。你必须显示调用 save() 方法。 >>> p.save()
# objects.all() 用以显示数据库中所有的 polls 。 >>> Poll.objects.all() [<Poll: Poll object>]
请稍等。<Poll: Poll object>
这样显示对象绝对是无意义的。 让我们编辑 polls 模型( 在 polls/models.py 文件中 ) 并且给 Poll 和 Choice 都添加一个 unicode() 方法来修正此错误:
class Poll(models.Model): # ... def __unicode__(self): return self.question class Choice(models.Model): # ... def __unicode__(self): return self.choice_text
给你的模型添加 unicode() 方法是很重要的, 不仅是让你在命令行下有明确提示,而且在 Django 自动生成的管理界面中也会使用到对象的呈现。
保存这些更改并且再次运行 python manage.py shell 以开启一个新的 Python shell:
>>> from polls.models import Poll, Choice # 确认我们附加的 __unicode__() 正常运行。 >>> Poll.objects.all() [<Poll: What's new?>]
写了上面这个此处的标题就会显示出来,不然显示的都是一样的article这个名称,该例子是其他的项目案列,此处是用来表明上面那层意思。