设为首页 收藏本站
查看: 1174|回复: 0

[经验分享] Django系列教程:六、模型(一)

[复制链接]

尚未签到

发表于 2016-11-22 08:55:02 | 显示全部楼层 |阅读模式
  注明:python版本为3.3.1、Django版本为1.5.1,操作系统为Windows7,其他版本有一些不同的地方读者可以自行探讨。
  因为本章篇幅略长,所以分作两节来讲,这一节将讲解下数据库的安装,和模型的配置,下一节则是讲解一下Django里面如何对数据库进行各种操作。
  一些知识:
  A:什么是模型?
  如果熟悉MVC的朋友应该知道M其实就是模型Model的意思,即数据存取层,该层处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。简单点就是操作数据库的一个体系。
  B:为什么要用模型?
  因为在Python中要操作数据库则需要数据库驱动,这些驱动有内置的(sqlite3)也有需要安装的(mysql、postgre)等,只有安装了这些数据库的驱动,python才能对他们进行操作,如下面的代码就是使用mysqldb数据库驱动的一个例子。


from django.shortcuts import render_to_response
import MySQLdb
def book_list(request):
db = MySQLdb.connect(user='me', db='mydb', passwd='secret', host='localhost')
cursor = db.cursor()
cursor.execute('SELECT name FROM books ORDER BY name')
names = [row[0] for row in cursor.fetchall()]
db.close()
return render_to_response('book_list.html', {'names': names})

  从上面的例子(源自Django Book2)我们可以看到它直接将sql语句硬编码到了html中,而理想的情况应该是将这些参数都保存在Django中。另外,如果以后换作其他的数据库,则又不得不从新修改,实在是麻烦至极,而模型正好可以解决这个问题,下面我们就来讲将模型是怎样来解决这个问题的。
  1、数据库的安装和Python数据库驱动的安装(这里为了配合大多数教材,所以以postgreSQL为例,其实万法同归。)
  下载postgreSQL安装,地址:http://www.postgresql.org/download/ 选择合适的版本,windows安装时按照步骤来就行,没有太多的配置,只是设置的密码要记住了。比如我的密码设置为:911027 (如果还不行,请百度之,这里不浪费时间了)
  安装好以后再下载它的数据库驱动,其地址为:http://www.djangoproject.com/r/python-pgsql/ windows安装时会自动定位到你的python目录,一步即可安装到位,无须任何配置。
  2、配置和验证数据库
  打开你的settings.py文件,具体修改后代码如下:



DATABASES = {
'default': {   #默认代码如下这时候看我操作
'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'postgres',#默认有一个数据库                      # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': 'postgres',#默认用户名
'PASSWORD': '911027',
'HOST': '',                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
'PORT': '',        #上面两项都留空              # Set to empty string for default.
    }
}
  下面就是验证一下是否配置成功,看我图片中的操作即可。
DSC0000.gif

  如果最后没出现错误则表示配置成功。要不然就会出现错误信息,常见的有下面几种。

表 5-2. 数据库配置错误信息  

错误信息解决方法



You haven’t set the DATABASE_ENGINE setting yet.
不要以空字符串配置`` DATABASE_ENGINE`` 的值。 表格 5-1 列出可用的值。


Environment variable DJANGO_SETTINGS_MODULE is undefined.
使用`` python manager.py shell`` 命令启动交互解释器,不要以`` python`` 命令直接启动交互解释器。


Error loading _____ module: No module named _____.
未安装合适的数据库适配器 (例如, psycopg 或 MySQLdb )。Django并不自带适配器,所以你得自己下载安装。


_____ isn’t an available database backend.
把DATABASE_ENGINE 配置成前面提到的合法的数据库引擎。 也许是拼写错误?


database _____ does not exist
设置`` DATABASE_NAME`` 指向存在的数据库,或者先在数据库客户端中执行合适的`` CREATE DATABASE`` 语句创建数据库。


role _____ does not exist
设置`` DATABASE_USER`` 指向存在的用户,或者先在数据库客户端中执创建用户。


could not connect to server
查看DATABASE_HOST和DATABASE_PORT是否已正确配置,并确认数据库服务器是否已正常运行。


  3、创建一个应用程序
  这里说的应用程序其实是一个App,使用下面的代码即可创建。



python manage.py startapp books
  以上代码便创建了一个名叫books的App,那么它和Project是什么关系呢?其实关系很简单,你只要将project当作整个网站主体,其中有买书的、有卖鱼的,有相亲的,这些每一样都可以建立一个App,换句话说App其实就是project的功能,这样理解应该不算错。
好了,创建好这个app以后,下面就是把这个app关联到这个工程中去,比如我这里的工程是testtemplate,我们找到settings.py文件,找到INSTALLED_APPS将其代它代码注释掉,再添加books即可:



INSTALLED_APPS = (
#'django.contrib.auth',
#'django.contrib.contenttypes',
#'django.contrib.sessions',
#'django.contrib.sites',
#'django.contrib.messages',
#'django.contrib.staticfiles',
'books',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
)
  另外还要将下面MIDDLEWARE_CLASSES的代码修改为如此:



MIDDLEWARE_CLASSES = (
#'django.middleware.common.CommonMiddleware',
#'django.contrib.sessions.middleware.SessionMiddleware',
#'django.middleware.csrf.CsrfViewMiddleware',
#'django.contrib.auth.middleware.AuthenticationMiddleware',
#'django.contrib.messages.middleware.MessageMiddleware',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
  其实就是将括号里面的给注释掉,因为你使用了books这个App,其他的并没有用到,如果还要调用的话反而会出错。
  好了,代码的配置暂时到这里结束了。下面看看你的文档结构如下:
  -------------------------------------------------------------------
│  manage.py

├─books
│  │  models.py
│  │  tests.py
│  │  views.py
│  │  __init__.py
│  │
│  └─__pycache__
│          models.cpython-33.pyc
│          __init__.cpython-33.pyc

└─testtemplate
    │  handle.py
    │  settings.py
    │  urls.py
    │  wsgi.py
    │  __init__.py
    │
    ├─template
    │      template.html
    │
    └─__pycache__
            handle.cpython-33.pyc
            handles.cpython-33.pyc
            settings.cpython-33.pyc
            urls.cpython-33.pyc
            view.cpython-33.pyc
            wsgi.cpython-33.pyc
            __init__.cpython-33.pyc
  --------------------------------------------------------------
  可以打开books文件夹下面的models.py和views.py文件看看,除了models.py中有一行代码,其余皆为空白。本章就暂时到这里,下一章我们将通过一个简单的例子来说明模型中django数据库如何进行查询创建,修改排序增减删除等操作。
  本人既是python的初学者也是Django的初学者,写这一系列教程的目的就是为了加深自己的理解,希望大家多多包涵和指教,有什么问题请留言,谢谢。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-303773-1-1.html 上篇帖子: Sharding & IDs at Instagram 下篇帖子: jsp数据库连接大全和数据库操作封装到Javabean
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表