modules基本使用

models是数据库的api,可以对数据库进行增删改查等操作。
学习阶段使用的数据库是sqllite,使用其他数据库可以修改settings.py文件中的配置项。使用数据库前需要在数据库中提前创建一个库,表可以通过models创建。
使用models.py文件创建一个表

from django.db import models

class UserInfo(models.Model):       #创建一个类,类名会作为表名的一部分
    username = models.CharField(max_length=32,null=True)     #创建一个表中的字段,字段名为username,char类型,长度32,可以为空
    password = models.CharField(max_length=32,null=True)     #创建一个表中的字段,字段名为password,char类型,长度32,可以为空

然后在pycharm下边的terminal界面输入如下命令

>>>python manage.py makemigrations  #执行的命令
Migrations for 'demo':            #输出的内容
  demo\migrations\0001_initial.py
    - Create model UserInfo

再执行

python manage.py migrate 创建了一个有3个字段的表,其中第一个字段名为id,是默认创建的自增字段。

python model文件 python models_python


执行后会在左侧项目下创建一个db.sqllite3的文件,把它拖到右侧的database下

python model文件 python models_python django_02

这样就能看到创建的数据库表了

python model文件 python models_数据库_03


其中demo_userinfo是创建的表,表名为application name加下划线加创建的类名组成。其他都是django默认创建的表。

修改前边写的views.py文件

from django.shortcuts import render,HttpResponse,redirect
from demo import models       #导入刚才写的demo包下的models模块

def login(request):
    a = ['biaoti','geshi',0,1]
    if request.method=='GET':
        obj_li = models.UserInfo.objects.all()     #obj_li为QuerySetList,后边的all表示表中所有数据,每个QuerySet就是数据库中一条数据的对象
        #obj_li = models.UserInfo.objects.filter(username='test')    #根据条件查询,相当于sql中的where,obj_li拿到的数据都是QuerySetList
        #for obj in obj_li:
        #    print("username: ", obj.username)
        #    print("password: ", obj.password)
    return render(request, 'login.html', locals())

修改login.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>{{ a.0 }}</h1>       <!--读取views.py文件中的a变量第0个值,即列表切片的第0个值-->

    {% for item in obj_li %}     <!--循环读取views.py文件中obj_li对象-->
        <div>
        <span>{{ item.username }}</span>    <!--读取每个对象的username字段值-->
        <span>{{ item.password }}</span>    <!--读取每个对象的password字段值-->
        </div>
    {% endfor %}
</body>
</html>

在数据库表中添加一些数据,启动django,访问http://127.0.0.1:8000/login/ 就是出现如下内容

python model文件 python models_数据库_04

基本命令

Django基本命令,在终端执行,也可以在pycharm的terminal中执行

  1. 创建一个django project
    django-admin.py startproject mysite
  2. 在mysite目录下创建应用,比如blog:
    python manage.py startapp blog 在项目下添加应用时就可以执行这条命令
  3. 启动django项目
    python manage.py runserver ip:port ip和port可以不写,默认是127.0.0.1:8000
  4. 同步更改数据库表或字段
    python manage.py syncdb 注意:Django 1.7.1 及以上的版本需要用以下命令
python manage.py makemigrations
python manage.py migrate

这种方法可以创建表,当你在models.py中新增了类时,运行它就可以自动在数据库中创建表了,不用手动创建。

  1. 清空数据库
    python manage.py flush 此命令会询问是 yes 还是 no, 选择 yes 会把数据全部清空掉,只留下空表。
  2. 创建超级管理员
python manage.py createsuperuser
     # 按照提示输入用户名和对应的密码就好了邮箱可以留空,用户名和密码必填
     # 修改用户密码可以用:
    python manage.py changepassword username
  1. Django 项目环境终端
    python manage.py shell 一般调试时使用
  2. Django 项目环境终端
    python manage.py dbshell 同上条
  3. 更多命令
    python manage.py
  4. static配置
#STATIC文件可以配置STATICFILES_DIRS,指定额外的静态文件存储位置。
    #  STATIC_URL的含义与MEDIA_URL类似。
    # ----------------------------------------------------------------------------
    #注意1:
        #为了后端的更改不会影响前端的引入,避免造成前端大量修改
        
        STATIC_URL = '/static/'               #引用名
        STATICFILES_DIRS = (
            os.path.join(BASE_DIR,"statics")  #实际名 ,即实际文件夹的名字
        )

        #django对引用名和实际名进行映射,引用时,只能按照引用名来,不能按实际名去找
        #<script src="/statics/jquery-3.1.1.js"></script>
        #------error-----不能直接用,必须用STATIC_URL = '/static/':
        #<script src="/static/jquery-3.1.1.js"></script>

    #注意2(statics文件夹写在不同的app下,静态文件的调用):

        STATIC_URL = '/static/'

        STATICFILES_DIRS=(
            ('hello',os.path.join(BASE_DIR,"app01","statics")) ,
        )

        #<script src="/static/hello/jquery-1.8.2.min.js"></script>

    #注意3:
        STATIC_URL = '/static/'
        {% load staticfiles %}
       # <script src={% static "jquery-1.8.2.min.js" %}></script>