`
witchxg
  • 浏览: 4126 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

django学习(一)

阅读更多
最近所在小组人员扩张到8人,之前所用的email excel发报告和分配任务的方式显得非常凌乱和难以管理。
我打算用最近一直在使用的python做一个小小的工作流\excel管理网站。

第一步:做一个非常简单的web结构

1,运行 django-admin.py startproject mysite 命令在当前目录创建一个 mysite 目录。
2,启动服务python manage.py runserver
默认情况下只监听8080端口,且只响应来自本机的request.

指定端口:python manage.py runserver 8080
改变监听ip地址:python manage.py runserver 0.0.0.0:8080

3,动态视图:松耦合的view和url
urls.py被定义在setting.py里面
Root_URLCONF='mysite.urls'
然后在编辑urls.py为
from django.conf.urls.defaults import *
from mysite.views import current_datetime

urlpatterns = patterns('',
    (r'^time/$', current_datetime),
)
这里的^time/$开头和结尾都是严格定义。可以用正则来匹配。

4,模板系统
from django.template import Template, Context
t = Template('Your name is {{ name }}.')
t.render(Context({'var': 'hello'}))

非常简洁的模板的例子。template和context结构匹配,并且在template里面可以调用对应的对象的属性等。

{% block %} :表示block所表示的模板部分可以被子模板重载
{% extends "base.html" %}:继承 base.html模板
如果base.html包含{% block content %},则子模板中出现的{% block content %}是直接读取父模板被应用的部分?--达到“如果想进行站点级的设计修改,仅需修改 base.html ,所有其它模板会立即反映出所作修改”的效果?

5,和数据库打交道
django的MTV框架--Model->view->template呈现给用户

a,配置setting.py使本test网站认识数据库

DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = 'c:\mysite\test.db'
DATABASE_USER = ''
DATABASE_PASSWORD = ''
DATABASE_HOST = ''
DATABASE_PORT = ''

b,建立一个app叫做books:python manage.py startapp books

c,打开books下的models.py,编辑成如下内容:
from django.db import models

class Publisher(models.Model):
    name = models.CharField(maxlength=30)
    address = models.CharField(maxlength=50)
    city = models.CharField(maxlength=60)
    state_province = models.CharField(maxlength=30)
    country = models.CharField(maxlength=50)
    website = models.URLField()

d,激活刚刚输入的模型
编辑setting.py INSTALLED_APPS = (
    'mysite.books',
)
e,用python manage.py validate命令来检查是否有语法错误
f,用python manage.py syncdb命令来同步生成setting里的model与数据库。它只在第一次生成的时候起作用。所以不用担心重复执行。
g,数据库的访问和修改:

>>> from books.models import Publisher
>>> p1 = Publisher(name='Addison-Wesley', address='75 Arlington Street',
...     city='Boston', state_province='MA', country='U.S.A.',
...     website='http://www.apress.com/')
>>> p1.save()

这短短几行代码干了不少的事。这里简单的说一下:
    *
      要创建对象,只需 import 相应模型类,并传入每个字段值将其实例化。
    *
      调用该对象的 save() 方法,将对象保存到数据库中。Django 会在后台执行一条 INSERT 语句。
    *
      使用属性 Publisher.objects 从数据库中获取对象。调用 Publisher.objects.all() 获取数据库中所有的 Publisher 对象。此时,Django 在后台执行一条 SELECT SQL语句。

讲的很清晰:)
为app books下的每个model对象添加一个函数
def __str__(self):
        return self.name

名字不能随便改,因为它是会被默认访问到,显示到cmd界面上

----
以上面的p1为例,它现在是一条Publisher数据,可以用p1.属性=“随意符合要求的值”然后p1.save()来更新数据库。
如果是用Publisher.objects.all()得到的对象是一个QuerySet 是一个记录集合。
Publisher.objects.filter(country="U.S.A.", state_province="CA")
Publisher.objects.get(name="Addison-Wesley")
Publisher.objects.order_by("name")
以上是一些可以调用的函数。

ps:QuerySet是没有save()函数可调的。如果是
p=Publisher.objects.all()
p[1].name='test'
p.save()
是会出错的
也许应该p[1].save()
---
修改表结构
app books里面的model可以看作是数据库的一个子集,它只在意它绑定的到相关的信息,并不会对数据库多出几个cloumn报错。

当我们处理表结构的修改时,要时刻想着 Django 的数据库层是如何工作的:
    *
      如果模型中包含一个在数据库中并不存在的字段,Django会大声抱怨的。这样当你第一次调用Django的数据库API来查询给定的表时就会出错(也就是说,它会在执行的时候出错,而不是编译的时候)
    *
      Django并不关心数据库表中是否存在没有在模型中定义的列
    *
      Django并不关心数据库中是否包含没有模型描述的表
修改表结构也就是按照正确的顺序修改各种Python代码和数据库本身

讲的很清晰:)


第一天先读到这里:)
分享到:
评论

相关推荐

    Python中django学习心得

    ### Python中Django学习心得详解 #### 一、概述 本文档主要介绍Python中的Django Web应用框架的一些关键概念和技巧。Django是一款基于Python语言的开源Web开发框架,它遵循MVC(Model-View-Controller)设计模式,...

    Django学习笔记.pdf

    Django是一个高级的Python Web框架,它鼓励快速开发和干净、实用的设计。Django采用的是MVC(Model-View-Controller)设计模式,但是通常被称为MTV(Model-Template-View)模式。接下来,我将对Django框架的主要组成...

    django学习资料

    标题:“django学习资料”提供了丰富的知识点,主要围绕Django框架进行深入讲解。Django是一个用Python开发的开源免费Web应用框架,遵循MVC模式(模型-视图-控制器),强调快速开发和DRY(Don't Repeat Yourself)...

    Django视频学习资源

    ### Django视频学习资源知识点 #### 一、Django框架简介 Django是一个开源的Web开发框架,基于Python语言编写而成。它遵循MVC(模型-视图-控制器)设计模式,能够帮助开发者快速构建高性能的网站应用。Django最初...

    Django最全入门学习资料

    【Django最全入门学习资料】是一份专为初学者准备的资源集合,涵盖了Python Django框架的各个方面,旨在帮助新手快速掌握Web开发的基础知识。Django是基于Python的开源Web框架,以其“ batteries included ”的理念...

    django中文学习.pdf

    《Django中文学习.pdf》是一本关于Web应用框架Django的中文教程,涵盖了从入门到高级的全方位知识。Django是一个高效、免费且开源的Python Web框架,它遵循MTV(Model-Template-View)设计模式,旨在简化Web开发过程...

    Django学习路线图.emmx

    本人学习django归纳的学习路线图,不仅仅只有学习路线,每个学习路线中包含我归纳的教程,可以理解像树状图一样的教程,一棵树中的每一个果子,每个果子有核和肉。都包含了

    Django学习笔记

    个人总结的Django学习笔记, 持续更新中。 目前只是总结了django的一部分学习逻辑。

    Django 学习课件 英文版

    这是一份来自国外大学的 Django 学习资源,旨在帮助初学者全面掌握 Django 框架。课程涵盖了从基础的 Python 语法到 Django 的核心组件,包括 Models、Views、Templates 的深入讲解,以及如何构建功能完备的 Admin ...

    Django学习笔记.zip

    这个名为"Django学习笔记.zip"的压缩包文件显然包含了关于Django框架深入学习的各种资料,涵盖了从基础到进阶的主题。让我们逐一探讨这些主题。 1. **Django安装**:Django的安装通常通过Python的包管理器pip完成。...

    django框架学习笔记

    【描述】:“django学习” 在Python的世界里,Django是一个强大且受欢迎的Web框架,它遵循模型-视图-控制器(MVC)设计模式,用于快速开发高效且可维护的网站。Django强调代码复用,提供了丰富的内置功能,如ORM...

    Django学习笔记.docx

    Django学习笔记 本文档是 Django 学习笔记,基于 b 站千锋教育的视频课程,涵盖了 Django 的基础知识和应用实践。 知识点一:Django 项目结构 * 项目结构:manage.py、__init__.py、settings.py、urls.py、wsgi....

    django学习第一课

    【标题】"django学习第一课"揭示了我们即将探索的是Python web开发框架Django的初步教程。Django是一个强大而全面的开源框架,用于快速构建高效、可维护的web应用程序。它遵循“DRY”(Don't Repeat Yourself)原则...

    利用Django学习并开发的小说网源码.zip

    本项目"利用Django学习并开发的小说网源码.zip"是一个实践教程,旨在帮助开发者理解如何运用Django构建一个小说阅读平台。 1. **Django项目结构** Django项目通常由以下几个主要部分组成:`manage.py`、`settings....

    django学习常见错误

    Django学习常见错误解决方案 Django是一个流行的Python Web框架,提供了许多有用的功能和工具,但是刚开始学习Django的开发者可能会遇到一些常见的错误。以下是Django学习中常见的错误解决方案: 1. 应用没有显示...

    Django学习博客示例代码

    **Django学习博客示例代码** ...这个Django学习博客示例代码提供了一个全面的实践平台,涵盖了Web开发的基本要素,是初学者理解Django框架的好起点。通过学习和实践,你可以逐步掌握如何构建一个功能完善的博客系统。

    Django学习入门教程.pdf

    ### Django学习入门教程知识点概述 #### 一、基础概念与响应类型 - **HttpResponse返回字符串**:`HttpResponse`是Django框架中用于构建HTTP响应的一个类。它最常用来返回简单的字符串作为响应主体。例如,当用户...

    django框架重点学习文档下载

    ### Django框架重点学习知识点 #### 一、Django框架概览 **1.1 Django框架简介** Django是一个开源的Web框架,用Python语言编写,它遵循MVC(Model-View-Controller)架构的设计思想,但为了更好地适应Web开发的...

    Django学习资源3333

    在"Django学习资源3333"这个压缩包中,我们很可能会找到一系列与Django相关的学习资料,如教程、课件、示例代码等,这些都能帮助初学者或有经验的开发者深入理解Django框架。 Django的核心概念包括模型(Models)、...

Global site tag (gtag.js) - Google Analytics