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,是默认创建的自增字段。
执行后会在左侧项目下创建一个db.sqllite3的文件,把它拖到右侧的database下
这样就能看到创建的数据库表了
其中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/ 就是出现如下内容
基本命令
Django基本命令,在终端执行,也可以在pycharm的terminal中执行
- 创建一个django project
django-admin.py startproject mysite
- 在mysite目录下创建应用,比如blog:
python manage.py startapp blog
在项目下添加应用时就可以执行这条命令 - 启动django项目
python manage.py runserver ip:port
ip和port可以不写,默认是127.0.0.1:8000 - 同步更改数据库表或字段
python manage.py syncdb
注意:Django 1.7.1 及以上的版本需要用以下命令
python manage.py makemigrations
python manage.py migrate
这种方法可以创建表,当你在models.py中新增了类时,运行它就可以自动在数据库中创建表了,不用手动创建。
- 清空数据库
python manage.py flush
此命令会询问是 yes 还是 no, 选择 yes 会把数据全部清空掉,只留下空表。 - 创建超级管理员
python manage.py createsuperuser
# 按照提示输入用户名和对应的密码就好了邮箱可以留空,用户名和密码必填
# 修改用户密码可以用:
python manage.py changepassword username
- Django 项目环境终端
python manage.py shell
一般调试时使用 - Django 项目环境终端
python manage.py dbshell
同上条 - 更多命令
python manage.py
- 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>