Django 模型

作者: binarystar | 来源:发表于2015-06-25 21:22 被阅读486次

    ** 软件环境:** 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. 创建数据表

    • ** 数据表同步命令(Django < 1.7) **
      python manage.py syncdb

    • ** 数据表同步命令 (Django >= 1.7) **
      python manage.py makemigrations
      python manage.py migrate

    看到几行"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
    出现以下错误

    • No module named mysqldb

    解决方法参考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)

    • python manage.py makemigrations
    • python manage.py migrate
    makemigrations.png

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

    models02.png

    相关文章

      网友评论

      本文标题:Django 模型

      本文链接:https://www.haomeiwen.com/subject/waheqttx.html