python-django开发学习笔记一
1.简述
1.1 开发环境
该笔记所基于的开发环境为:windows8、python2.7.5、psycopg2-2.4.2、django1.5.4、pyCharm-2.7.3。以上所描述的软件、插件安装、破解等可以参考之前的python笔记,提供了具体的资源链接和操作步骤。
1.2 django学习笔记简介
django学习基于官网提供的投票应用,是学习该应用编写过程中,遇到的问题、知识点、注意问题等的总结,同时包含大量学习过程中的截图,方便大家更直观的学习。
它将包含两部分:
一个公共网站,可让人们查看投票的结果和让他们进行投票。
一个管理网站,可让你添加、修改和删除投票项目。
官网文档链接为http://django-chinese-docs.readthedocs.org/en/latest/

1.3 关于笔记
同样作为初学者,写这篇文章时,刚刚看到教程的第4部分,笔记中有不足之处,还希望大家指正,真心与大家共同讨论学习!
------------------------------------------------
博主经营一家发饰淘宝店,都是纯手工制作哦,开业冲钻,只为信誉!需要的亲们可以光顾一下!谢谢大家的支持!
店名:
小鱼尼莫手工饰品店
经营:
发饰、头花、发夹、耳环等(手工制作)
网店:
http://shop117066935.taobao.com/
---------------------------------------------------------------------
继续正题...
2.搭建项目的运行环境

import django;
print(django.get_version())

django-admin.py startproject mysite
.png)


.png)

.png)

python manage.py syncdb

2.9.在pgadmin中查看创建好的tables

.png)
python manage.py startapp polls
.png)

.png)

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)
.png)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
'polls',)
3.5 根据 model 的定义,使用命令语句获取创建table所需的sql
python manage.py sql polls
BEGIN;CREATE TABLE "polls_poll" (
"id" serial NOT NULL PRIMARY KEY,
"question" varchar(200) NOT NULL,
"pub_date" timestamp with time zone NOT NULL);CREATE TABLE "polls_choice" (
"id" serial NOT NULL PRIMARY KEY,
"poll_id" integer NOT NULL REFERENCES "polls_poll" ("id") DEFERRABLE INITIALLY DEFERRED,
"choice_text" varchar(200) NOT NULL,
"votes" integer NOT NULL);COMMIT;
3.6 再次运行 syncdb 命令,将会自动在你的数据库中创建这些模型对应的表
python manage.py syncdb
3.7 可以看到database中新创建了两个表
.png)
>>> from polls.models import Poll, Choice # Import the model classes we just wrote. # 系统中还没有 polls 。
>>> Poll.objects.all()
[] # 创建一个新 Poll 。
# 在默认配置文件中时区支持配置是启用的,因此 Django 希望为 pub_date 字段获取一个 datetime with tzinfo 。使用了 timezone.now(),而不是 datetime.datetime.now() 以便获取正确的值。
>>> from django.utils import timezone
>>> p = Poll(question="What's new?", pub_date=timezone.now()) # 保存对象到数据库中。你必须显示调用 save() 方法。
>>> p.save() # 现在对象拥有了一个ID 。请注意这可能会显示 "1L" 而不是 "1",取决于你正在使用的数据库。 这没什么大不了的,它只是意味着你的数据库后端喜欢返回的整型数作为 Python 的长整型对象而已。
>>> p.id
1# 通过 Python 属性访问数据库中的列。
>>> p.question
"What's new?"
>>> p.pub_date
datetime.datetime(2012, 2, 26, 13, 0, 0, 775217, tzinfo=<UTC>) # 通过改为属性值来改变值,然后调用 save() 方法。
>>> p.question = "What's up?"
>>> p.save() # objects.all() 用以显示数据库中所有的 polls 。
>>> Poll.objects.all()[<Poll: Poll object>]
3.9 处理Poll object问题
class Poll(models.Model):
# ...
def __unicode__(self):
return self.question class Choice(models.Model):
# ...
def __unicode__(self):
return self.choice_text
ps:新shell演示,可以看到结果
.png)

import datetime
from django.utils import timezone
# ...
class Poll(models.Model):
# ...
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
3.11 保存上访修改后,在新的shell中对table操作
python manage.py shell
>>> from polls.models import Poll, Choice # 确认我们附加的 __unicode__() 正常运行。
>>> Poll.objects.all()
[<Poll: What's up?>] # Django 提供了一个丰富的数据库查询 API ,完全由关键字参数来驱动。
>>> Poll.objects.filter(id=1)
[<Poll: What's up?>]
>>> Poll.objects.filter(question__startswith='What')
[<Poll: What's up?>]
# 获取今年发起的投票。
>>> from django.utils import timezone
>>> current_year=timezone.now().year
>>> Poll.objects.get(pub_date__year=current_year)
<Poll: What's up?>
# 请求一个不存在的 ID ,这将引发一个异常。
>>> Poll.objects.get(id=2)
Traceback (most recent call last):
...DoesNotExist:
Poll matching query does not exist. Lookup parameters were {'id': 2}
# 根据主键查询是常见的情况,因此 Django 提供了一个主键精确查找的快捷方式。
# 以下代码等同于 Poll.objects.get(id=1).
>>> Poll.objects.get(pk=1)
<Poll: What's up?> # 确认我们自定义方法正常运行。
>>> p = Poll.objects.get(pk=1)
>>> p.was_published_recently()
True # 给 Poll 设置一些 Choices 。通过 create 方法调用构造方法去创建一个新Choice 对象实例,执行 INSERT 语句后添加该 choice 到可用的 choices 集中并返回这个新建的 Choice 对象实例。 Django 创建了一个保存外键关联关系的集合 ( 例如 poll 的 choices) 以便可以通过 API去访问。
>>> p = Poll.objects.get(pk=1) # 从关联对象集中显示所有 choices -- 到目前为止还没有。
>>> p.choice_set.all()[] # 创建三个 choices 。
>>> p.choice_set.create(choice_text='Not much', votes=0)
<Choice: Not much>
>>> p.choice_set.create(choice_text='The sky', votes=0)
<Choice: The sky>
>>> c = p.choice_set.create(choice_text='Just hacking again', votes=0) # Choice 对象拥有访问它们关联的 Poll 对象的 API 。
>>> c.poll
<Poll: What's up?> # 反之亦然: Poll 对象也可访问 Choice 对象。
>>> p.choice_set.all()
[<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]
>>> p.choice_set.count()
3 # 只要你需要 API 会自动连续关联。使用双下划线来隔离关联。只要你想要几层关联就可以有几层关联,没有限制。
# 寻找和今年发起的任何 poll 有关的所有 Choices( 重用我们在上面建立的 'current_year' 变量 )。
>>> Choice.objects.filter(poll__pub_date__year=current_year)
[<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]
# 让我们使用 delete() 删除 choices 中的一个。
>>> c = p.choice_set.filter(choice_text__startswith='Just hacking')
>>> c.delete()
结果(ps:delete 后 The haking行删除)
.png)

python-django开发学习笔记一的更多相关文章
- python web开发学习笔记一:javascript基础
一.认识js: 能进入到软件所实习是我的最大的收获,也是我的荣幸,我相信努力付出一定能够换回收获. 项目最先开始的是接触到web前端的一些内容,我们需要利用flask搭建应该有的框架.我有一些pyth ...
- python Django 相关学习笔记
Django框架 pip3 install django 命令: # 创建Django程序 django-admin startproject mysite # 进入程序目录 cd mysite # ...
- Python Flask 开发学习笔记
Flask学习 安装pipenv虚拟环境 pip Install pipenv 运行pipenv pipenv --version 进入虚拟容器 pipenv install 安装flask pipe ...
- Django:学习笔记(1)——开发环境配置
Django:学习笔记(1)——开发环境配置 Django的安装与配置 安装Django 首先,我们可以执行python -m django --version命令,查看是否已安装django. 如果 ...
- Django初识 学习笔记一
Django初识 学习笔记一 mvcviewsmodelstemplate. 一 MVC框架 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(c ...
- python网络爬虫学习笔记
python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...
- Django:学习笔记(7)——模型进阶
Django:学习笔记(7)——模型进阶 模型的继承 我们在面向对象的编程中,一个很重要的的版块,就是类的继承.父类保存了所有子类共有的内容,子类通过继承它来减少冗余代码并进行灵活扩展. 在Djang ...
- Django:学习笔记(4)——请求与响应
Django:学习笔记(4)——请求与响应 0.URL路由基础 Web应用中,用户通过不同URL链接访问我们提供的服务,其中首先经过的是一个URL调度器,它类似于SpringBoot中的前端控制器. ...
- Django:学习笔记(2)——创建第一个应用
Django:学习笔记(2)——创建第一个应用 创建应用 在 Django 中,每一个应用都是一个 Python 包,并且遵循着相同的约定.Django 自带一个工具,可以帮你生成应用的基础目录结构, ...
- 《Python Web开发学习实录》高清PDF版|百度网盘免费下载|Python Web开发学习实录
<Python Web开发学习实录>高清PDF版|百度网盘免费下载|Python Web开发学习实录 提取码:9w3o 内容简介 Python是目前流行的动态脚本语言之一. 李勇,本书共1 ...
随机推荐
- scala中Map和Set
scala中Set包含可变set和不可变Set,set的子类HashSet,各有一个扩展了可变和不可变的set特质. 可变set import scala.collection.mutable.Se ...
- BarTender中每个标签提示手动输入的设置方法
我们知道手动输入数据进行标签打印,可以利用BarTender中的数据输入表单来实现.表单的创建有利于提示程序员,输入要打印标签的的数据.如果手动输入数据的标签较多,可以设置表单提示为每个标签提示,减去 ...
- WebGL 颜色与纹理
1.纹理坐标 纹理坐标是纹理图像上的坐标,通过纹理坐标可以在纹理图像上获取纹理颜色.WebGL系统中的纹理坐标系统是二维的,如图所示.为了将纹理坐标和广泛使用的x.y坐标区分开来,WebGL使用s和t ...
- java okhhtp下载学信网学籍信息
学信网的登录有验证码,是那种计算数字或者汉字识别的,很难识别.最近连学籍信息和学历信息也换成图片了,常规的正则 css xpath都不能使. 下载图片,需要先登录,获取登陆后的cookie和学籍信息的 ...
- 为什么调用 FragmentPagerAdapter.notifyDataSetChanged() 并不能更新其 Fragment?【转载】
转载自:http://www.cnblogs.com/dancefire/archive/2013/01/02/why-notifyDataSetChanged-does-not-work.html ...
- Java 代码块:静态代码块、构造代码块、构造函数块
Class : StaticFa package edu.bai.du.lime.staticCode; public class StaticFa { // 随着类的声明而执行 static { S ...
- Go之类型判断
boy := util.Boy{util.Person{"Eric", 19, "boy"}, "1"} var boyClone inte ...
- RFC文件
RFC(Request For Comments)-意即“请求评议”,包含了关于Internet的几乎所有重要的文字资料.如果你想成为网络方面的专家,那么RFC无疑是最重要也是最经常需要用到的资料之一 ...
- Oracle之表空间基于时间点的恢复
记一次优化过程中:一次误操作,在不影响其他表空间的情况下:采用表空间基于时间点的恢复(TSPITR)方法恢复数据的过程. 1.TSPITR恢复原理 TSPITR目前最方便的方法是使用RMAN进行 ...
- 【重要】U3D存放本地游戏存档——不同平台载入XML文件的方法——IOS MAC Android
在PC上和IOS上读取XML文件的方式略有差别,经测试,IOS上不支持如下方法载入XML文件: XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load( ...