以一个投票程序的实例来讲解Python的Django框架使用

论坛 期权论坛 脚本     
niminba   2021-5-23 03:27   2622   0

(一)关于Django

    Django是一个基于MVC构造的框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。

    Ubuntu下的安装:一般都自带Python的。网上教程比较多了....

dizzy@dizzy-pc:~$ python
Python 2.7.3 (default, Apr 20 2012, 22:44:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> help(django)
VERSION = (1, 6, 4, 'final', 0)
#可以查看django版本等信息。

(二)第一个Django的app

#环境:Python2.7,Django1.6,Ubuntu12.04
        Python 及 Django 安装成功之后,就可以创建Django工程了       

    (1)教你开始写Django1.6的第1个app

#先创建一个文件夹
dizzy@dizzy-pc:~$ mkdir Python
dizzy@dizzy-pc:~$ cd Python
#然后创建工程
dizzy@dizzy-pc:~/Python$ django-admin.py startproject mysite
dizzy@dizzy-pc:~/Python$ cd mysite
#然后这个工程就可以启动服务了
dizzy@dizzy-pc:~/Python/mysite$ python manage.py runserver
Validating models...
 
0 errors found
July 23, 2014 - 14:17:29
Django version 1.6.4, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
#这样,打开浏览器访问: 便可看到: It Worked! 关闭服务:ctrl+c
 
#新创建的项目里面会有:manage.py文件,mysite文件夹
#在mysite文件夹里面会有:__init__.py,settings.py,urls.py,wsgi.py四个文件
 
#__init__.py是一个空文件,
#setting.py 是项目的配置文件。需要修改两个地方,这里使用默认的SQLite3数据库
LANGUAGE_CODE = 'zh-cn' #原:en-us
TIME_ZONE = 'Asia/Shanghai' #原:UTC
 
#配置完之后,便可以创建数据表了
dizzy@dizzy-pc:~/Python/mysite$ python manage.py syncdb
#创建是还要设置一个超级管理员,用于后台登录。
#设置完之后,开启服务,便可进入后台管理界面了:http://127.0.0.1:8000/admin/

    (2)教你开始写Django1.6的第1个app


#创建一个用于投票的app。
#进入mysite工程根目录,创建app
dizzy@dizzy-pc:~/Python/mysite$ python manage.py startapp polls
dizzy@dizzy-pc:~/Python/mysite$ ls polls
admin.py  __init__.py  models.py urls.py  views.py
 
#这样。Django已经生成了,app通常所需的模板文件。

        下面创建两个models。Poll 和 Choice

dizzy@dizzy-pc:~/Python/mysite$ vim polls/models.py

        修改文件如下:

from django.db import models
 
# Create your models here.
 
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)
#基本创建model过程就是这样,细节还要深入研究!

        然后修改工程的配置文件setting.py,在INSTALLED_APP元组下面添加刚才创建的app:polls

dizzy@dizzy-pc:~/Python/mysite$ vim mysite/settings.py
 
INSTALLED_APPS = (
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'polls',
)
 
#可以使用 python manage.py sql polls 查看app的建表SQL
#使用 python manage.py syncdb 进行创建数据库表
dizzy@dizzy-pc:~/Python/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_text" varchar(200) NOT NULL,
  "votes" integer NOT NULL
)
;
 
COMMIT;
 
#这样就可以通过设置model让Django自动创建数据库表了
    要想在后台admin中管理polls。还需要修改app下面的admin.py 文件。

from django.contrib import admin
 
# Register your models here.
 
from django.contrib import admin
from polls.models import Choice,Poll
 
class ChoiceInLine(admin.StackedInline):
  model = Choice
  extra = 3
 
class PollAdmin(admin.ModelAdmin):
  fieldsets = [
    (None,         {'fields':['question']}),
    ('Date information',  {'fields':['pub_date'],'classes':['collapse']}),
  ]
  inlines = [ChoiceInLine]
 
admin.site.register(Poll,PollAdmin)
 
#这部分代码,大体
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP