Django初级手册1-项目和应用的创建与简单的数据库操作

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

创建项目django-admin.py startPRoject mysite

1. 目录结构mysite/ #项目的名称

manage.py #可通过命令和项目进行交互的文件

mysite/ #项目的实际文件夹

__init__.py #空文件,告诉python这个目录是个python包

settings.py #该项目的配置文件

urls.py #项目的URL声明,dispatch文件

wsgi.py #项目wscgi的一个入口

2. 启动开发机只用于开发环境,不能用于生产环境!

开发环境支持热启动

python manage.py runserver #default 8000

#如果主机想访问虚拟机需要指定ip和端口

python manage.py runserver 0.0.0.0:8000

3.数据库需求MySQLdb

pip2.7 install mysql-python -i http://pypi.douban.com/simple

settings.py文件中进行设置

#mysql的数据库必须提前建好

DATABASES = {

'default': {

# 'ENGINE': 'django.db.backends.sqlite3',

# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

'ENGINE': 'django.db.backends.mysql',

'NAME': 'test',

'USER': 'root',

'PASSWord': '123456',

'HOST': '127.0.0.1',

'PORT': '3306',

}

}

#修改时区

#TIME_ZONE = 'UTC'

TIME_ZONE = 'Asia/Shanghai'

#默认apps

INSTALLED_APPS = (

'django.contrib.admin', #管理页面

'django.contrib.auth', #权限系统

'django.contrib.contenttypes', #内容框架

'django.contrib.sessions', #回话框架

'django.contrib.messages', #消息框架

'django.contrib.staticfiles', #管理静态内容框架

)

#此命令会安装上述的app,并生成对应的表,在此建立系统管理员帐号和密码

python manage.py syncdb

创建模型app完成某个特定的功能,诸如微博系统,公共记录数据库亦或是一个简单的投票程序。

project是若干配置文件与许多app组成的特殊网站。

project可以包含很多app,app也可用于多个project。

python manage.py startapp polls

这会生成

polls/

__init__.py

admin.py

models.py

tests.py

views.py

首先应该定义模型。

模型是关于数据的独立、限定的资源。它包括要存储的数据的必要的字段和行为。

Django遵循DRY原则,即Don't repeat youself——每一个独立的概念或数据都存储在一个地方,并且存储一份。

定义所有的模型,关于投票,创建投票和选择两个模型,投票包括一个问题和一个发起日期,选择包括选择的内容和投票计数。每一个选择应该关联一个投票。

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)

每个模型对应一个类,每个类继承自models.Model,每个类对应一张表。

每个类成员对应该表的列,并且有自己的类型。有些参数是必须的例如max_length,它不只是数据库的模式,还包括页面的验证。而整数类型的默认值是可选的。

最后类之间的关系用外键来描述。该处需要注意的是,poll会自动处理为poll_id加到

激活模型首先应该在settings.py中添加该应用。

INSTALL_APPS = (

...

...

'polls',

)

然后键入命令,观察models生成的SQL语句。

python manage.py sql polls

这里有一些额外的命令可以观察实际的构成。

python manage.py validate #检查错误,尤其是构建apps的model后检查,再运行syncdb之前

python manage.py sqlcustom polls #输出应用定义的custom sql statement

python manage.py sqlclear polls #输出应用中有必要DROP TABLE的语句

python manage.py sqlindexes polls

python manage.py sqlall polls #输出sql sqlcustom sqlindexes的集合

然后要实际运行这些语句,在数据库中实际建立他们。该语句只用于初次创建时

python manage.py syncdb

调用API来工作#进入互动界面

python manage.py shell

>>> from polls.models import Poll, Choice

#显示所有实例

>>> Poll.objects.all()

[]

>>> from django.utils import timezone

#创建一个对象

>>> p = Poll(question="What's new?", pub_date=timezone.now())

#存入数据库

>>> p.save()

#可使用p.question等修改,查看类成员函数,修改后再次save即可

>>> Poll.objects.all()

[<Poll: Poll object>] #这是由于__unicode__没有设置的结果,

class Poll(models.Model):

# ...

def __unicode__(self): # Python 3: def __str__(self):

return self.question

#这样即可输出

>>> Poll.objects.all()

[<Poll: What's new?>]

#查找数据库,filter(类成员名称后双下划线,可以加入各种比较)

#get可直接用来查找,其中pk可用来查找主键,PrivateKey

>>> Poll.objects.filter(question__startswith='What')

[<Poll: What's up?>]

>>> current_year = timezone.now().year

>>> Poll.objects.get(pub_date__year=current_year)

<Poll: What's up?>

因为Poll是Choice的外键,所以Poll有如下的成员函数

>>> p.choice_set.all()

[]

>>> c = p.choice_set.create(choice_text='Just hacking again', votes=0)

>>> p.choice_set.all()

[<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]

>>> p.choice_set.count()

3

# Choice也有如下的成员变量

>>> c.poll

<Poll: What's up?>

#删除某个记录

>>> c = p.choice_set.filter(choice_text__startswith='Just hacking')

>>> c.delete()

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航