Django学习django入门Pythoner集中营

Django 模型

2015-06-25  本文已影响486人  binarystar

** 软件环境:** windows7+Python2.7.9+Django1.8.2

一、定义模型

1. 创建 APP

Django规定,如果要使用模型,必须要创建一个app。我们使用以下命令创建一个 TestModel 的 app:
python manage.py startapp TestModel

2. 定义Model

我们修改 TestModel/models.py文件,代码如下:

# models.py
from django.db import models

class Test(models.Model):
    name = models.CharField(max_length=20)

以上的类名代表了数据库名称,且继承了models.Model,类里面的字段代表数据表中的字段(name),数据类型则由CharField(相当于varchar)、DateField(相当于datetime), max_length 参数限定长度。

3. 配置APP

接下来在settings.py中找到INSTALLED_APPS这一项,如下:

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'TestModel',               # 添加此项

4. 创建数据表

看到几行"Creating table…"的字样,你的数据表就创建好了。

Creating tables ...
……
Creating table TestModel_test #我们自定义的表
……

表名组成结构为:app名_类名(如:TestModel_test)。
** 注意:**尽管我们没有在models给表设置主键,但是Django会自动添加一个id作为主键。

二、数据库操作

1. 修改urls.py

接下来我们在 HelloWorld/HelloWorld 目录中修改urls.py:

from django.conf.urls import *
from HelloWorld.view import hello
from HelloWorld.testdb import testdb

urlpatterns = patterns("",
    ('^hello/$', hello),
    ('^testdb/$', testdb),
)

2. 添加数据

HelloWorld/HelloWorld目录中添加 testdb.py 文件。
添加数据需要先创建对象,然后再执行 save 函数,相当于SQL中的INSERT:

# -*- coding: utf-8 -*-

from django.http import HttpResponse

from TestModel.models import Test

# 数据库操作
def testdb(request):
test1 = Test(name='w3cschool.cc')
test1.save()
return HttpResponse("<p>数据添加成功!</p>")

访问http://localhost:8000/testdb/就可以看到数据添加成功的提示。

三、问题解决思路

1. No module named mysqldb

在命令行中运行
python manage.py syncdb
出现以下错误

解决方法参考django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

2. without Migrations

python manage.py syncdb
出现下面内容

syncdb02.png

输入网址http://localhost:8000/testdb/ ,显示错误页面

testdb02.png

表明数据库中的testmodel_test表没有创建成功。

3. 查找Django Documentation - Models

执行如下命令 (Django >= 1.7)

makemigrations.png

4. 输入网址http://localhost:8000/testdb/ ,显示结果页面

models02.png
上一篇下一篇

猜你喜欢

热点阅读