`
qzriso
  • 浏览: 243009 次
  • 性别: Icon_minigender_1
  • 来自: ph
社区版块
存档分类
最新评论

Django笔记4

阅读更多
1.设置settings.py

DATABASE_ENGINE = 'mysql'         
DATABASE_NAME = 'django'           
DATABASE_USER = 'root'           
DATABASE_PASSWORD = '123456'       
DATABASE_HOST = 'localhost'           
DATABASE_PORT = ''

要注意的是无论选择使用哪个数据库服务器,都必须下载和安装对应的数据库适配器。
Mysql为:http://www.djangoproject.com/r/python-mysql/
输入完设置后,测试一下配置情况。首先,转到mysite 项目目录,运行 python manage.py shell 命令。输入下面这些命令来测试你的数据库配置:
>>> from django.db import connection
>>> cursor = connection.cursor()
如果没有显示什么错误信息,那么你的数据库配置是正确的。

2. 执行下面的命令来创建一个新app叫做books:
python manage.py startapp books

3.添加模型,打开 models.py 并输入下面的内容

from django.db import models
# Create your models here.
class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=60)
    state_province = models.CharField(max_length=30)
    country = models.CharField(max_length=50)
    website = models.URLField()
  
class Author(models.Model):
    salutation = models.CharField(max_length=10)
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField()
    headshot = models.ImageField(upload_to='tmp')

class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher)
    publication_date = models.DateField()

4.模型安装
再次编辑 settings.py 文件, 找到 INSTALLED_APPS 设置。

INSTALLED_APPS = (
#    'django.contrib.auth',
#    'django.contrib.contenttypes',
#    'django.contrib.sessions',
#    'django.contrib.sites',
     'mysite.books'
)

现在我们可以创建数据库表了。首先,用下面的命令对校验模型的有效性:
python manage.py validate
按提示信息安装相应模块
books.author: “headshot”: To use ImageFields, you need to install the Python Ima
ging Library. Get it at http://www.pythonware.com/products/pil/ .
模型确认没问题了,运行下面的命令来生成 CREATE TABLE 语句:
python manage.py sqlall books
运行命令的结果是这样的:

BEGIN;
CREATE TABLE "books_publisher" (
    "id" serial NOT NULL PRIMARY KEY,
    "name" varchar(30) NOT NULL,
    "address" varchar(50) NOT NULL,
    "city" varchar(60) NOT NULL,
    "state_province" varchar(30) NOT NULL,
    "country" varchar(50) NOT NULL,
    "website" varchar(200) NOT NULL
);
CREATE TABLE "books_book" (
    "id" serial NOT NULL PRIMARY KEY,
    "title" varchar(100) NOT NULL,
    "publisher_id" integer NOT NULL REFERENCES "books_publisher" ("id"),
    "publication_date" date NOT NULL
);
CREATE TABLE "books_author" (
    "id" serial NOT NULL PRIMARY KEY,
    "salutation" varchar(10) NOT NULL,
    "first_name" varchar(30) NOT NULL,
    "last_name" varchar(40) NOT NULL,
    "email" varchar(75) NOT NULL,
    "headshot" varchar(100) NOT NULL
);
CREATE TABLE "books_book_authors" (
    "id" serial NOT NULL PRIMARY KEY,
    "book_id" integer NOT NULL REFERENCES "books_book" ("id"),
    "author_id" integer NOT NULL REFERENCES "books_author" ("id"),
    UNIQUE ("book_id", "author_id")
);
CREATE INDEX books_book_publisher_id ON "books_book" ("publisher_id");
COMMIT;

sqlall 命令并没有在数据库中真正创建数据表,只是把SQL语句段打印出来。你可以把这些语句段拷贝到你的SQL客户端去执行它。当然,Django提供了更简单的方法来执行这些SQL语句。运行 syncdb 命令:
python manage.py syncdb
你将会看到这样的内容:
Creating table books_publisher
Creating table books_book
Creating table books_author
Installing index for books.Book model

syncdb 命令是同步你的模型到数据库的一个简单方法。它会根据 INSTALLED_APPS 里设置的app来检查数据库,如果表不存在,它就会创建它。需要注意的是, syncdb 并 不能同步模型的修改到数据库。如果你修改了模型,然后你想更新数据库, syncdb 是帮不了你的。(稍后我们再讲这些。)
如果你再次运行 python manage.py syncdb ,什么也没发生,因为你没有添加新的模型或者添加新的app。所以,运行 python manage.py syncdb 总是安全的,它不会把事情搞砸。
如果你有兴趣,花点时间用你的SQL客户端登录进数据库服务器看看刚才Django创建的数据表。 Django带有一个命令行工具, python manage.py dbshell 。

5.基本数据访问
运行 python manage.py shell 并输入下面的内容试试看:

>>> 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()
>>> p2 = Publisher(name="O'Reilly", address='10 Fawcett St.',
...     city='Cambridge', state_province='MA', country='U.S.A.',
...     website='http://www.oreilly.com/')
>>> p2.save()
>>> publisher_list = Publisher.objects.all()
>>> publisher_list
[<publisher : Publisher object>, </publisher><publisher : Publisher object>]
</publisher>

6.添加模块的字符串表现
添加一个方法 __str__() 到 Publisher 对象。 __str__() 方法告诉Python要怎样把对象当作字符串来使用。请看下面:

from django.db import models
# Create your models here.
class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=60)
    state_province = models.CharField(max_length=30)
    country = models.CharField(max_length=50)
    website = models.URLField()
    def __str__(self):
        return self.name
  
class Author(models.Model):
    salutation = models.CharField(max_length=10)
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField()
    headshot = models.ImageField(upload_to='/tmp')
    def __str__(self):
        return '%s %s' % (self.first_name, self.last_name)
  
class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher)
    publication_date = models.DateField()
    def __str__(self):
        return self.title

请确保你的每一个模型里都包含 __str__() 方法,这不只是为了交互时方便,也是因为 Django会在其他一些地方用 __str__() 来显示对象。
7.详细数据库操作参照http://djangobook.py3k.cn/chapter05/
分享到:
评论

相关推荐

    django笔记 django笔记

    本笔记将深入探讨Django的基础概念、核心功能以及实际应用。 1. **Django简介**: Django是由两位美国开发者在2005年创建的开源项目,它遵循MVC(模型-视图-控制器)设计模式,但更倾向于MTV(模型-模板-视图)...

    B站武沛齐Django笔记和代码

    2022 B站最详细django3教程(django从入门到实践) 很适合刚学习django的同学 通过一个案例,把django的基本的templates,models,urls,from,modelfrom讲的清清楚楚,甚至还给了我们应用场景。

    千峰django笔记.md

    学习django框架的笔记,超详细

    django笔记

    在看django book 2.0和django官方文档的过程中自己做的django笔记,

    2019版-千锋Django-源码+笔记.zip

    千锋Django笔记可能涵盖了从安装配置到项目实战的全过程,包括模型定义、视图处理、模板渲染、表单处理、用户认证与授权等重要知识点。思维导图则以可视化的方式,帮助记忆和理解Django的架构和各组件之间的关系,使...

    千锋Django笔记.rar

    【千锋Django笔记】是针对Python Web开发框架Django的一份详细学习资料,这份笔记可能包含了从基础知识到高级特性的全面讲解。Django是一个高效、成熟且功能强大的开源Web框架,它遵循“DRY(Don't Repeat Yourself...

    Django学习笔记.zip

    4. **数据类型**:Django ORM(对象关系映射)提供了多种内置字段类型,如CharField、IntegerField、DateTimeField等,用于定义模型中的属性。了解这些字段类型及其用法,能帮助我们更好地设计数据库结构。 5. **...

    千锋教育Django笔记

    【千锋教育Django笔记】是一份专门为初学者设计的学习资料,它涵盖了Django框架的基础知识和实战技巧。Django是Python编程语言中一个强大的、免费的开源Web应用框架,它遵循模型-模板-视图(MTV)架构模式,旨在简化...

    django学习笔记

    **Django学习笔记** Django,作为Python领域最流行的Web框架之一,因其高效、安全且易于上手的特点,被广大开发者所青睐。本学习笔记旨在深入解析Django的核心概念、功能以及实际应用,帮助读者从零开始掌握这个...

    Django框架学习笔记

    ### Django框架学习笔记 #### 软件框架概述 软件框架是软件开发中的一种结构化设计,它提供了一种组织代码、数据和其他资源的方式,使得开发者可以更容易地构建应用程序。框架通常包含了一些预设的解决方案,这些...

    Django学习笔记.doc文件.rar

    在本压缩包中,"Django学习笔记.doc文件.rar"包含了一份详尽的Django框架学习资料,由以下几个部分组成: 1. **用户身份验证.doc**:这部分讲述了Django内置的身份验证系统,包括如何创建用户账户,登录和登出功能...

    Django笔记(自用)

    Django笔记(自用)

    django相关笔记

    Django相关笔记记录了Django基础,可以帮助同行快速上手。

    Django学习笔记.pdf

    ### Django学习笔记知识点详解 #### 一、Django框架安装及环境配置 **知识点1:安装Django** - **背景介绍:** 在Python环境中安装Django框架是开发基于Python的Web应用程序的第一步。 - **安装步骤:** - **...

    Django学习笔记

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

    django框架学习笔记

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

    django教程:基本操作笔记整理.png

    django教程:基本操作笔记整理.png

Global site tag (gtag.js) - Google Analytics