创建项目

  1. django-admin.py startproject mysite

1. 目录结构

  1. mysite/ #项目的名称
  2. manage.py #可通过命令和项目进行交互的文件
  3. mysite/ #项目的实际文件夹
  4. __init__.py #空文件,告诉python这个目录是个python包
  5. settings.py #该项目的配置文件
  6. urls.py #项目的URL声明,dispatch文件
  7. wsgi.py #项目wscgi的一个入口

2. 启动开发机

只用于开发环境,不能用于生产环境!
开发环境支持热启动

  1. python manage.py runserver #default 8000
  2. #如果主机想访问虚拟机需要指定IP和端口
  3. python manage.py runserver 0.0.0.0:8000

3. 数据库

需求MySQLdb

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

settings.py文件中进行设置

  1. #mysql的数据库必须提前建好
  2. DATABASES = {
  3. 'default': {
  4. # 'ENGINE': 'django.db.backends.sqlite3',
  5. # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
  6. 'ENGINE': 'django.db.backends.mysql',
  7. 'NAME': 'test',
  8. 'USER': 'root',
  9. 'PASSWORD': '123456',
  10. 'HOST': '127.0.0.1',
  11. 'PORT': '3306',
  12. }
  13. }
  14. #修改时区
  15. #TIME_ZONE = 'UTC'
  16. TIME_ZONE = 'Asia/Shanghai'
  17. #默认apps
  18. INSTALLED_APPS = (
  19. 'django.contrib.admin', #管理页面
  20. 'django.contrib.auth', #权限系统
  21. 'django.contrib.contenttypes', #内容框架
  22. 'django.contrib.sessions', #回话框架
  23. 'django.contrib.messages', #消息框架
  24. 'django.contrib.staticfiles', #管理静态内容框架
  25. )
  26. #此命令会安装上述的app,并生成对应的表,在此建立系统管理员帐号和密码
  27. python manage.py syncdb

创建模型

app完成某个特定的功能,诸如微博系统,公共记录数据库亦或是一个简单的投票程序。
project是若干配置文件与许多app组成的特殊网站。
project可以包含很多app,app也可用于多个project。

  1. python manage.py startapp polls

这会生成

  1. polls/
  2. __init__.py
  3. admin.py
  4. models.py
  5. tests.py
  6. views.py

首先应该定义模型。
模型是关于数据的独立、限定的资源。它包括要存储的数据的必要的字段和行为。
Django遵循DRY原则,即Don't repeat youself——每一个独立的概念或数据都存储在一个地方,并且存储一份。
定义所有的模型,关于投票,创建投票和选择两个模型,投票包括一个问题和一个发起日期,选择包括选择的内容和投票计数。每一个选择应该关联一个投票。

  1. from django.db import models
  2. class Poll(models.Model):
  3. question = models.CharField(max_length=200)
  4. pub_date = models.DateTimeField('date published')
  5. class Choice(models.Model):
  6. poll = models.ForeignKey(Poll)
  7. choice_text = models.CharField(max_length=200)
  8. votes = models.IntegerField(default=0)

每个模型对应一个类,每个类继承自models.Model,每个类对应一张表。
每个类成员对应该表的列,并且有自己的类型。有些参数是必须的例如max_length,它不只是数据库的模式,还包括页面的验证。而整数类型的默认值是可选的。
最后类之间的关系用外键来描述。该处需要注意的是,poll会自动处理为poll_id加到

激活模型

首先应该在settings.py中添加该应用。

  1. INSTALL_APPS = (
  2. ...
  3. ...
  4. 'polls',
  5. )

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

  1. python manage.py sql polls

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

  1. python manage.py validate #检查错误,尤其是构建apps的model后检查,再运行syncdb之前
  2. python manage.py sqlcustom polls #输出应用定义的custom sql statement
  3. python manage.py sqlclear polls #输出应用中有必要DROP TABLE的语句
  4. python manage.py sqlindexes polls
  5. python manage.py sqlall polls #输出sql sqlcustom sqlindexes的集合

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

  1. python manage.py syncdb

调用API来工作

  1. #进入互动界面
  2. python manage.py shell
  3. >>> from polls.models import Poll, Choice
  4. #显示所有实例
  5. >>> Poll.objects.all()
  6. []
  7. >>> from django.utils import timezone
  8. #创建一个对象
  9. >>> p = Poll(question="What's new?", pub_date=timezone.now())
  10. #存入数据库
  11. >>> p.save()
  12. #可使用p.question等修改,查看类成员函数,修改后再次save即可
  13. >>> Poll.objects.all()
  14. [<Poll: Poll object>] #这是由于__unicode__没有设置的结果,
  15. class Poll(models.Model):
  16. # ...
  17. def __unicode__(self): # Python 3: def __str__(self):
  18. return self.question
  19. #这样即可输出
  20. >>> Poll.objects.all()
  21. [<Poll: What's new?>]
  22. #查找数据库,filter(类成员名称后双下划线,可以加入各种比较)
  23. #get可直接用来查找,其中pk可用来查找主键,PrivateKey
  24. >>> Poll.objects.filter(question__startswith='What')
  25. [<Poll: What's up?>]
  26. >>> current_year = timezone.now().year
  27. >>> Poll.objects.get(pub_date__year=current_year)
  28. <Poll: What's up?>

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

  1. >>> p.choice_set.all()
  2. []
  3. >>> c = p.choice_set.create(choice_text='Just hacking again', votes=0)
  4. >>> p.choice_set.all()
  5. [<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]
  6. >>> p.choice_set.count()
  7. 3
  8. # Choice也有如下的成员变量
  9. >>> c.poll
  10. <Poll: What's up?>
  11. #删除某个记录
  12. >>> c = p.choice_set.filter(choice_text__startswith='Just hacking')
  13. >>> c.delete()

Django初级手册1-项目和应用的创建与简单的数据库操作的更多相关文章

  1. django之三剑客、静态文件配置、请求响应对象、数据库操作

    三剑客 from django.shortcuts import render,HttpResponse,redirect HttpResponse # 返回字符串 render(response, ...

  2. Django初级手册3-视图层与URL配置

    设计哲学 在Django中一个视图有指定函数和指定模版组成.对于某些特定的应用应该分成若干视图.例如博客系统 Blog主页面 详细页面入口 基于年的页面展示 基于月的页面展示 基于天的页面展示 评论行 ...

  3. Django初级手册2-管理界面的使用及定制

    管理界面的使用 管理界面的URL,帐号和密码在第一次输入syncdb时建立 http://127.0.0.1:8000/admin/ 将app加入管理界面 编辑polls/admin.py from ...

  4. Django初级手册6-静态文件

    用Django加载外部文件 在Django中iamges,JS或者CSS通称为static文件 定制APP的外观 一般放在应用目录下的static/polls/目录下,下为polls/static/p ...

  5. Django初级手册5-自动化测试

    什么是自动化测试 每次更新完系统后,可自动进行测试,而不是手工从头测试一遍: 从长远和全局的角度看,测试能节约我们的时间: 测试是一种积极的行为,它能预防问题,而不仅仅是识别问题: 测试有助于代码美观 ...

  6. Django初级手册4-表单与通用视图

    表单的编写 1. detail.html模版的编写 <h1>{{ poll.question }}</h1> {% if error_message %}<p>&l ...

  7. Django简单的数据库操作

    当然,本篇的前提是你已经配置好了相关的环境,这里就不详细介绍. 一. 在settings.py文件中设置数据库属性. 如下: DATABASES = { 'default': { 'ENGINE': ...

  8. Django学习(一)---基本配置及创建项目、应用

    安装:在Django官网下载最新版Django然后通过pip安装即可 一.创建项目 进入文件夹,打开cmd窗口,输入django-admin startproject myblog(项目名) 二.创建 ...

  9. Python Django CMDB项目实战之-3创建form表单,并在前端页面上展示

    基于之前的项目代码 Python Django CMDB项目实战之-1如何开启一个Django-并设置base页.index页.文章页面 Python Django CMDB项目实战之-2创建APP. ...

随机推荐

  1. 不同.NET Framework版本下ASP.NET FormsAuthentication的兼容性

    假设站点A加密使用.NET Framework 2.0,站点B解密使用.NET Framework 4.0,除了保持MachineKey相同外还需要进行如下设置: 1.Web.config的<a ...

  2. mysql概要(四)order by ,limit ,group by和聚合函数的特点,子查询

    1.order by 默认按升序排列(asc/desc),多字段排序 order by 字段 排序方式,字段2 排序方式,..: 在分组排序中,排序是对分组后的结果进行排序,而不是在组中进行排序. s ...

  3. javaweb分页的后端实现

    先上demo图 servlet实现部分: package servlet; import java.io.IOException; import java.util.List; import java ...

  4. [转]Android Activity的加载模式和onActivityResult方法之间的冲突

    前言 今天在调试程序时,发现在某一Activity上点击返回键会调用该Activity的onActivityResult()方法.我一开始用log,后来用断点跟踪调试半天,还是百思不得其解.因为之前其 ...

  5. binlog介绍

    1.什么是binlog binlog是一个二进制格式的文件,用于记录用户对数据库更新的SQL语句信息,例如更改数据库表和更改内容的SQL语句都会记录到binlog里,但是对库表等内容的查询不会记录. ...

  6. table中强制不换行

    总是一些文章说要强制换行,很少提到说如何不换行. 一般都会使用word-break: keep-all;使得强制不换行. HTML <!DOCTYPE html PUBLIC "-// ...

  7. openstack 部署(Q版)-----glance镜像服务安装配置

    一.创建数据库 CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO '; GRANT ALL PRIVILEGES ON glanc ...

  8. ASP.NET IIS System.UnauthorizedAccessException: 对路径“C:\......xls”的访问被拒绝。

    问题: System.UnauthorizedAccessException: 对路径“C:\.....xls”的访问被拒绝. 背景: 项目中用到Excel导出功能,用的是Excel模板的方式来做,意 ...

  9. java 中方法的重写

    方法的重写 1.在子类中可以根据需要对从基类中继承来的方法进行重写. 2.方法重写必须要和被重写方法具有相同方法名称.参数列表和返回类型. 3.重写方法不能使用比被重写方法更严格的访问权限 4.注意与 ...

  10. PAT-GPLT L1-039 - 古风排版 - [字符串输入输出]

    题目链接:https://www.patest.cn/contests/gplt/L1-039 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standar ...