首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Diango 装配与入门示例

2012-12-18 
Diango 安装与入门示例Diango 安装指导1. 前提安装了 PythonDjango要求 Python 版本 2.4 to 2.7.推荐 2.5

Diango 安装与入门示例
Diango 安装指导


1. 前提
安装了 Python
Django要求 Python 版本 2.4 to 2.7.
推荐 2.5以上,它包含轻量级的数据库SQLite.

目前推荐使用2.6版本,2.7的第三方包很多不能使用.开发工具:
Pydev
www.pydev.org
安装配置:
python2.6 + django1.2.0 +eclipse 3.6 + pydev 1.6.0
注意插件版本, 不然会出问题的.


Python 2.7 for Windows
http://www.python.org/ftp/python/2.7.1/python-2.7.1.msi

Django 官方版本
http://media.djangoproject.com/releases/1.2/Django-1.2.4.tar.gz

2. 安装 Python 2.7
直接安装即可,安装目录E:\Python217.
配置环境变量:
PATH
加入目录 E:\Python217
新建PYTHONPATH
加入目录
E:\Python313\pyfiles,此目录用于创建你自己的*.py文件.

3. 安装 Django 1.2.4
解压Django-1.2.4.tar.gz到E:\
CMD进入目录E:\Django-1.2.4\
CMD> setup.py install

注意:
3.1 如果提示
if u'SVN' in version
语法错误
把u去掉即可,类似错误同样处理.
这主要是因为解释器不能识别这种unicode字符串语法.

3.2 如果安装了更高版本的Python,请先卸载.卸载后不用重启.
因为Django可能安装到高版本.

4. 验证
4.1 检查目录:\Python217\Lib\site-packages下是否有diagno目录.site-packages目录是第三方包存放的目录.
4.2 CMD>python
>>>import django
>>>django.get_version()

显示:1.2.4
>>>

5. 安装完成.

6. 示例

6.1 创建项目文件夹:
E:\python_projects

6.2 创建项目mysite
6.2.1 配置环境变量PATH
加入
E:\Python217\Lib\site-packages\django\bin

6.2.2 CMD进入E:\python_projects.
> django-admin.py startproject mysite

在E:\python_projects\mysite目录下会生成4个文件
__init__.py
manage.py
settings.py
urls.py

__init__.py: 一个空文件,标识mysite是一个Python包.

manage.py: 一个与Django交互的命令行工具.

settings.py: 项目配置文件.

urls.py: URL的声明,使用正则表达式.

6.3 启动自带的纯Python语言实现的开发者WEB服务器
6.3.1 CMD进入mysite目录
> manage.py runserver

E:\python_projects\mysite>manage.py runserverValidating models...0 errors foundDjango version 1.2.4, using settings 'mysite.settings'Development server is running at http://127.0.0.1:8000/Quit the server with CTRL-BREAK.


6.3.2 访问服务器
http://127.0.0.1:8000/

显示:
It worked!
Congratulations on your first Django-powered page.
Of course, you haven't actually done any work yet. Here's what to do next:

?If you plan to use a database, edit the DATABASES setting in mysite/settings.py.
?Start your first app by running python mysite/manage.py startapp [appname].
You're seeing this message because you have DEBUG = True in your Django settings file and you haven't configured any URLs. Get to work!

6.3.3 修改服务器IP和端口
manage.py runserver <ip>:<port>
默认端口8000

6.4. 安装数据库
6.4.1 配置Python自带的SQLite数据库
修改setting.py的DATABASES变量.
DATABASES = {    'default': {        'ENGINE': 'django.db.backends.sqlite3',         'NAME': 'E:/python_projects/mysite/db/test.db',                       'USER': '',                              'PASSWORD': '',                         'HOST': '',                                      'PORT': '',                          }}


6.4.2 同步数据库
> manage.py syncdb

提示是否创建Django超级用户:YES
USERNAME: admin
PASSWORD: admin


E:\python_projects\mysite>manage.py syncdbCreating table auth_permissionCreating table auth_group_permissionsCreating table auth_groupCreating table auth_user_user_permissionsCreating table auth_user_groupsCreating table auth_userCreating table auth_messageCreating table django_content_typeCreating table django_sessionCreating table django_siteYou just installed Django's auth system, which means you don't have any superusers defined.Would you like to create one now? (yes/no): yesUsername (Leave blank to use 'cs'): adminE-mail address: amos_tl@126.comPassword:Password (again):Superuser created successfully.Installing index for auth.Permission modelInstalling index for auth.Group_permissions modelInstalling index for auth.User_user_permissions modelInstalling index for auth.User_groups modelInstalling index for auth.Message modelNo fixtures found.E:\python_projects\mysite>


6.4.3 创建应用
项目与应用的区别:
一个项目可包含多个应用,一个应用可属于多个项目.简单理解就是应用是可重用的.

下面开始创建一个投票的应用.
首先创建应用

E:\python_projects\mysite> manage.py startapp polls

创建成功后目录结构:
polls/
    __init__.py
    models.py
    tests.py
    views.py

6.4.3.1 创建模型
模型定义的DRY原理:Don’t repeat yourself 不做重复的事情.
只在一个地方定义模型,自动获取数据.

投票应用我们定义了两个模型.
投票(问题,日期)
投票选择(选择,计分)
每一个选择关联一个投票.
模型定义如下:

models.py
from django.db import modelsclass Poll(models.Model):    question = models.CharField(max_length=200)    pub_date = models.DateTimeField('date published')class Choice(models.Model):    poll = models.ForeignKey(Poll)    choice = models.CharField(max_length=200)    votes = models.IntegerField()


Poll和Choice是models.Model的子类.其中的属性代表表字段.它们是Field字段类的实例.
这里还用到了外键关系.
Django支持常用的数据库关系:多对多,多对一,一对一.

6.4.3.2 激活模型
配置setting.py文件:
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'mysite.polls',
)

6.4.3.3 查看模型SCHEMA
> manage.py sql polls

E:\python_projects\mysite>manage.py sql polls

BEGIN;CREATE TABLE "polls_poll" (    "id" integer NOT NULL PRIMARY KEY,    "question" varchar(200) NOT NULL,    "pub_date" datetime NOT NULL);CREATE TABLE "polls_choice" (    "id" integer NOT NULL PRIMARY KEY,    "poll_id" integer NOT NULL REFERENCES "polls_poll" ("id"),    "choice" varchar(200) NOT NULL,    "votes" integer NOT NULL);COMMIT;


这条SQL并没有实际在数据库执行,要执行它,同步数据库即可:
> manage.py syncdb

6.4.3.4 查看应用索引,自定义SQL,表创建SCHEMA,表和索引创建SCHEMA
> manage.py sqlindexes polls
> manage.py sqlcustom polls
> manage.py sql polls
> manage.py sqlall polls

6.4.3.5 删除SCHEMA
> manage.py sqlclear polls

6.4.3.6 验证模型
> manage.py validate

6.5 调用Python Shell
> manage.py shell

不直接调用PYTHON的原因,是manage.py做了两件事:
a) 通过 setting.py 的 INSTALLED_APPS 导入模块 mysite, polls 到 sys.path.
b) 设置DJANGO_SETTINGS_MODULE 模块环境变量,它的值是 mysite.settings 模块.

6.6 调用模型
>>> from polls.models import Poll, Choice>>> Poll.objects.all()[]>>> import datetime>>> p = Poll(question="What's up?", pub_date=datetime.datetime.now())>>> p.save()>>> p.id1>>> p.question"What's up?">>> p.pub_datedatetime.datetime(2007, 7, 15, 12, 00, 53)>>> p.pub_date = datetime.datetime(2007, 4, 1, 0, 0)>>> p.save()>>> Poll.objects.all()[<Poll: Poll object>]>>> quit()


6.7 完成

7. 自动生成管理站点
7.1 加入 "django.contrib.admin" 到 INSTALLED_APPS.

7.2 同步数据库
> manage.py syncdb

7.3 编辑 mysite/urls.py

from django.conf.urls.defaults import *# Uncomment the next two lines to enable the admin:from django.contrib import adminadmin.autodiscover()urlpatterns = patterns('',    # Example:    # (r'^mysite/', include('mysite.foo.urls')),    # Uncomment the admin/doc line below to enable admin documentation:    # (r'^admin/doc/', include('django.contrib.admindocs.urls')),    # Uncomment the next line to enable the admin:    (r'^admin/', include(admin.site.urls)),)


7.4 访问Admin应用
http://127.0.0.1:8000/admin/
用户名: 上面有配
密码: 上面有配

7.5 加入Polls应用
在E:\python_projects\mysite\polls目录创建admin.py

admin.py
from polls.models import Pollfrom django.contrib import adminadmin.site.register(Poll)


7.6 重启服务器.
a) CTRL + C
b) > manage.py runserver

7.6 再次访问Admin. CRUD Poll.

7.7 中文配置
settings.py

TIME_ZONE = 'China/ShangHai'
LANGUAGE_CODE = 'zh-cn'

8. 创建视图
8.1 设计URLs

urls.py加入
(r'^polls/$', 'polls.views.index'),

8.2 配置模板目录
settings.py

TEMPLATE_DIRS = (
    'E:/python_projects/mysite/template'
)

8.3 在E:/python_projects/mysite/template目录创建polls目录,新建index.html

index.html

{% if latest_poll_list %}    <ul>    {% for poll in latest_poll_list %}        <li><a href="/polls/{{ poll.id }}/">{{ poll.question }}</a></li>    {% endfor %}    </ul>{% else %}    <p>No polls are available.</p>{% endif %}



8.4 重启服务器,访问
http://127.0.0.1:8000/polls/

8.5 完成

9. 其它
高级表单处理
使用 RSS 框架
使用缓存框架
使用注释框架
管理员:权限管理
管理员:自定义JS

















热点排行