`

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 runserver
Validating models...
0 errors found

Django 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 syncdb
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site

You just installed Django's auth system, which means you don't have any superuse
rs defined.
Would you like to create one now? (yes/no): yes
Username (Leave blank to use 'cs'): admin
E-mail address: amos_tl@126.com
Password:
Password (again):
Superuser created successfully.
Installing index for auth.Permission model
Installing index for auth.Group_permissions model
Installing index for auth.User_user_permissions model
Installing index for auth.User_groups model
Installing index for auth.Message model
No 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 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 = 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.id
1

>>> p.question
"What's up?"
>>> p.pub_date
datetime.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 admin
admin.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 Poll
from django.contrib import admin

admin.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

















0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics