zoukankan      html  css  js  c++  java
  • Django 模型(数据库)

    Django 模型(数据库)

    Django 模型是与数据库相关的,与数据库相关的代码一般写在 models.py 中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库,只需要在settings.py中配置即可,不用更改models.py中的代码。

    大家可以按照我的步骤来开始做:

    1
    2
    3
    django-admin.py startproject learn_models # 新建一个项目
    cd learn_models                           #进入到该项目的文件夹
    django-admin.py startapp blog_app           #新建一个 blog_app 应用(app)

    1、新建的应用(blog_app)添加到 settings.py 中的 INSTALLED_APPS中,也就是告诉Django有这么一个应用。
        vim setting.py
        
        INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'blog_app',
        'web_app',
        ]


    2、blog_app/models.py 文件,修改其中的代码, vim blog_app/model.py
    from django.db import models
    class UserInfo(models.Model):
            username = models.CharField(max_length=50)
            email = models.EmailField()
            memo = models.TextField()
     
    def __unicode__(self):     # 在Python3中使用 def __str__(self) return self.username
       PS: 我们新建了一个UserInfo类,继承自models.Model, 一个人有姓名和年龄。这里用到了三种Field。
        3、我们来同步一下数据库
    注意:Django 1.7 及以上的版本需要用以下命令
    python manage.py makemigrations
    python manage.py migrate

    然后,我们会看到,Django生成了一系列的表,也生成了我们新建的UserInfo 这个表,那么如何使用这个表呢?
    Django提供了丰富的API, 下面演示如何使用它。

    >>>
    >>>

    Django提供了丰富的API, 下面演示如何使用它。

    1
    2
    3
    4
    5
    6
    $ python manage.py shell
     
    >>> from people.models import UserInfo
    >>> UserInfo.objects.create(name="zhangsan", age=24)
    <Person: Person object>
    >>>

    我们新建了一个用户zhangsan 那么如何从数据库是查询到它呢?

    1
    2
    3
    >>> Userinfo.objects.get(name="zhangsan")
    <UserInfoUserInfo object>
    >>>

           我们用了一个 .objects.get() 方法查询出来符合条件的对象,但是大家注意到了没有,查询结果中显示<UserInfo:UserInfo object>,这里并没有显示出与zhangsan的相关信息,如果用户多了就无法知道查询出来的到底是谁,查询结果是否正确,我们重新修改一下 blog_app/models.py

         1、name 和 age 等字段中不能有 __(双下划线,因为在Django QuerySet API中有特殊含义(用于关系,包含,不区分大小写,以什么开头或结尾,日期的大于小于,正则等)

         2、也不能有Python中的关键字,name 是合法的,student_name 也合法,但是student__name不合法,try, class, continue 也不合法,因为它是Python的关键字( import  keyword;  print(keyword.kwlist) 可以打出所有的关键字)







    GitHub:https://github.com/ju-do-it
    个人博客:https://zhangju.lookdoc.cn
    博客园:https://www.cnblogs.com/zhangju
    Copyright ©2020 Ju-do-it
    【转载文章务必保留出处和署名,谢谢!】
  • 相关阅读:
    NoClassDefFoundError问题
    Spring-Batch处理MySQL数据后存到CSV文件
    jQuery EasyUI + struts2.3 + mongoDB 列表查询翻页JAVA样例
    mongodb exception in initAndListen: 12596 old lock file, terminating 解决方法
    硬盘安装RedHat Enterprise Linux 6(转载)
    jQuery zxxbox弹出框插件(v3.0)
    在html页面中利用ftp访问协议格式载入服务器图片
    eclipse中 com.sun.image.codec.jpeg.JPEGCodec 无法编译通过问题
    java 去掉字符串右侧空格
    去掉eclipse js 错误提示
  • 原文地址:https://www.cnblogs.com/zhangju/p/5836514.html
Copyright © 2011-2022 走看看