返回顶部
首页 > 资讯 > 后端开发 > Python >Python django学习之:mod
  • 237
分享到

Python django学习之:mod

Pythondjangomod 2023-01-31 03:01:32 237人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

1. 建立app在自己的工程项目目录下输入:python manage.py startapp myapp(你想建立的app名称)建立一个叫myapp的app这样,在你的工程项目目录下会出现一个叫myapp的目录2. 创建Model在app

1. 建立app

在自己的工程项目目录下输入:

python manage.py startapp myapp(你想建立的app名称)

建立一个叫myapp的app

这样,在你的工程项目目录下会出现一个叫myapp的目录


2. 创建Model

在app目录下进入models.py

输入类似下面的代码:

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):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField()
class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher)
    publication_date = models.DateField()


上面的每个class相当于一个新的table

例外是Many to Many 关系

(注:The exception to the one-class-per-database-table rule is the case ofmany-to-many relationships. In our example models, Book has aManyToManyField called authors. This designates that a book has one ORMany authors, but the Book database table doesn’t get an authorscolumn. Rather, Django creates an additional table – a many-to-many “jointable” – that handles the mapping of books to authors.)


djanGo会自动给每个model配置一个名为id的primary key

(Finally, note we haven’t explicitly defined a primary key in any of thesemodels. Unless you instruct it otherwise, Django automatically gives everymodel an auto-incrementing integer primary key field called id. Each Djangomodel is required to have a single-column primary key.)


3. 安装model

在最初的配置文件settings.py中找到

INSTALLED_APPS

加入自己的app名称,比如'myapp'


用下面的命令验证model的有效性:

Python manage.py validate

如果一切正常,你会看到 0errorsfound 消息。如果出错,请检查你输入的模型代码。 错误输出会给出非常有用的错误信息来帮助你修正你的模型。一旦你觉得你的模型可能有问题,运行 pythonmanage.pyvalidate 。 它可以帮助你捕获一些常见的模型定义错误。


4. (真正在DB创建我们设定好的table)create table:

shell中输入

python manage.py sqlall myapp(步骤1中你创建的app名称)

然后你就可以看见各种SQL语句了,嗯,看上去不错。但是……坑爹的是“sqlall 命令并没有在数据库中真正创建数据表,只是把SQL语句段打印出来,这样你可以看到Django究竟会做些什么。”

所以说下面这个才是真正建表的语句:

python manage.py syncdb

之后你应该能看到诸如:

Creating tables ...
Creating table books_publisher
Creating table books_author
Creating table books_book_authors
Creating table books_book
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

这样的信息


值得注意的是,syncdb 命令是同步你的模型到数据库的一个简单方法。 它会根据 INSTALLED_APPS 里设置的app来检查数据库, 如果表不存在,它就会创建它。 需要注意的是, syncdb不能将模型的修改或删除同步到数据库;如果你修改或删除了一个模型,并想把它提交到数据库,syncdb并不会做出任何处理。


5. (插入一个新的对象) insert:

>>> from books.models import Publisher
>>> p1 = Publisher(name='Apress', address='2855 Telegraph Avenue',
...     city='Berkeley', state_province='CA', country='U.S.A.',
...     website='Http://www.apress.com/')
>>> p1.save()

查看:

>>> publisher_list = Publisher.objects.all()

>>> publisher_list


6. 额外问题:为model加入字符串表现形式

在每个model里加入:

def __unicode__(self):
    return self.name

return 处写上你想要的字符串


7. (选择对象)select:

Publisher.objects.all()

——相当于 select from

Publisher.objects.filter(name='Apress')

——相当于 select from ... where name = 'Apress'

Publisher.objects.filter(name__contains="press")

——相当于 select from ... where name LIKE '%press%';


以上方法,返回的都是一个list (其实是query set)


想直接获取单个对象?用get 方法!

Publisher.objects.get(name="Apress")


8.  (对结果排序) order:

Publisher.objects.order_by("name")

——相当于 select from ...  ORDER BY name;

多项排序:

Publisher.objects.order_by("state_province", "address")

逆向排序:

Publisher.objects.order_by("-name")

查询:

Publisher.objects.filter(country="U.S.A.").order_by("-name")


9. (更新对象)update:

1)使用save()方法:

>>> p = Publisher.objects.get(name='Apress')
>>> p.name = 'Apress Publishing'
>>> p.save()

——相当于

UPDATE books_publisher SET
    name = 'Apress Publishing',
    address = '2855 Telegraph Ave.',
    city = 'Berkeley',
    state_province = 'CA',
    country = 'U.S.A.',
    website = 'http://www.apress.com'
WHERE id = 52;

!!所有的列都被更新了!这也太naive了吧!


2)用update() 方法才比较好:

Publisher.objects.filter(id=52).update(name='Apress Publishing')

——相当于

UPDATE books_publisher
SET name = 'Apress Publishing'
WHERE id = 52;


可以对多行同时进行更新:

Publisher.objects.all().update(country='USA')

update()方法会返回一个整型数值,表示受影响的记录条数


10. (删除对象)delete:
调用该对象的delete()方法即可:

p = Publisher.objects.get(name="O'Reilly")

p.delete()

一旦使用all()方法,所有数据将会被删除:

Publisher.objects.all().delete()


参考:http://www.djangobook.com/en/2.0/chapter05.html

http://djangobook.py3k.cn/2.0/chapter05/

 

--结束END--

本文标题: Python django学习之:mod

本文链接: https://lsjlt.com/news/187470.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python django学习之:mod
    1. 建立app在自己的工程项目目录下输入:python manage.py startapp myapp(你想建立的app名称)建立一个叫myapp的app这样,在你的工程项目目录下会出现一个叫myapp的目录2. 创建Model在app...
    99+
    2023-01-31
    Python django mod
  • Django学习之十: staticfi
    目录 Django学习之十: staticfile 静态文件 理解阐述 静态文件 Django对静态文件的处理 其它方...
    99+
    2023-01-30
    Django staticfi
  • Django学习之配置篇
    MTV Model Template View 数据库 模版文件 业务处理 了解Django框架,功能齐全 一.安装Django&Django基本配置 安装Django pip3 django 配置Django 1.配置Dja...
    99+
    2023-01-30
    Django
  • [Python学习] Django 权限
    本文为大家讲解 Django 框架里自带的权限模型,从理论到实战演练,带领大家了解 Django 里权限是怎么一回事。主要内容什么是权限管理?Web 权限Django 权限机制Django 的权限项权限应用Permission(一)Perm...
    99+
    2023-01-31
    权限 Python Django
  • Python Web框架Django学习
    python web框架Django学习(二)目录: 三、Django创建APP 四、创建登录页面,实现用户交互,后台管理用户(非数据库方式)=================================================...
    99+
    2023-01-31
    框架 Python Web
  • Django学习笔记之Class-Based-View
    前言 大家都知道其实学习Django非常简单,几乎不用花什么精力就可以入门了。配置一个url,分给一个函数处理它,返回response,几乎都没有什么很难理解的地方。 写多了,有些问题才逐渐认识到。比如有一...
    99+
    2022-06-04
    学习笔记 Django Class
  • Django学习之八:forms组件【对
    目录 Django forms组件 bound and unbound form instance forms渲染有关 隐藏一个字段...
    99+
    2023-01-30
    组件 Django forms
  • Django学习之路之请求与响应
    目录前言请求什么是requestGET与POSTcsrf_token响应总结前言 上一章节中我们讲了如何引用静态文件和模板,以及如何使用常见的Django命令等。那么这章我们就来聊聊...
    99+
    2024-04-02
  • python学习--Django虚拟环境
    一 . 为什么选择搭建虚拟环境   搭建一个只对本次项目有用的虚拟环境,而不影响主环境 二 . 安装前准备   #    1. 安装 python  #    2. 安装virtualenvwrapper  #    3. 虚拟环境相关操...
    99+
    2023-01-30
    环境 python Django
  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-...
    99+
    2023-01-31
    之路 Python
  • python学习之--习题集
    1.什么是PVM?pvm是python的虚拟机,它是python运行时引擎解释编译得到的代码...
    99+
    2023-01-31
    习题集 python
  • Python学习之property
    Python中使用Property函数可以将类中的函数当作属性来调用。 案例 1 __metaclass__=type 2 class Rectangle: 3 def __init__(self): 4 ...
    99+
    2023-01-30
    Python property
  • python学习之pandas
    #Pandas'''1,Pandas是Python的一个数据分析报包,该工具为解决数据分析任务而创建。2,Pandas纳入大量库和标准数据模型,提供搞笑的操作数据集所需的工具3.pandas提供大量能使我们快速便捷地处理数据的1函数方法4,...
    99+
    2023-01-31
    python pandas
  • Python学习之类
    前言:之前写的博客,都是借鉴别的博文或者是环境的配置,没有自己的东西,掌握的很少。以后的博文,我都会尽力加上一些自己的东西。现在开始进入我的python世界吧!为什么要有类:在面向对象编程中,你要通过类来创建对象。通过类你可以对对象进行定义...
    99+
    2023-01-31
    Python
  • python学习之---mutable
    python的数据类型分为mutable(可变) 和 immutable (不可变) mutable : list ,dict inmutable : int , string , float ,tuple... mutable和immu...
    99+
    2023-01-31
    python mutable
  • Python学习之------retry
    在做数据抓取的时候,经常遇到由于网络问题导致的程序保存,先前只是记录了错误内容,并对错误内容进行后期处理。 原先的流程: def crawl_page(url): pass def log_error(url): ...
    99+
    2023-01-31
    Python retry
  • python之syslog学习
    大家在写程序时,都喜欢将过程和输出结果以log的形式保留下来,供参考。大部分朋友都采取的是open方式打开一个文件句柄方式,将其信息write进去,今天我学习的是采取unix或者类unix提供的一个syslog服务。在我们的python里提...
    99+
    2023-01-31
    python syslog
  • python 学习之 PythonAdv
    #!/usr/bin/python #coding=utf-8 #词典 ''' nl = [1, 3, 8] nl.append(15) print nl bl = [2, 3, 5] print nl + bl dic = {'tom':...
    99+
    2023-01-31
    python PythonAdv
  • python学习之路
    第一部分    使用入门1、人们选择python的六个主要原因是什么?①软件质量、开发者的效率、程序的可移植性、标准库的支持、组件集成和享受简便,其中质量和效率是选择python的主要原因。2、请列举正在使用python的四个著名公司的名字...
    99+
    2023-01-31
    之路 python
  • Python学习之List
    **Python的列表可以存儲任何數據類型,包括列表本身。它是通過索引訪問。**Python的索引值是從0開始的,以些類推**Python是通過中括號來包含所有的值,值與值之間通過","號分隔**查看python列表的擁有哪些方法,可以通過...
    99+
    2023-01-31
    Python List
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作