Django的模板和模型使用笔记

#由于blog编辑器原因,部分python代码例子记得缩进

1.新建项目

新建项目使用命令:django-admin.py startproject mysite ,新建完项目后,在项目目录下新建templates模板文件夹,然后设置容器目录下的settings.py文件,
在TEMPLATES的DIRS标记处填写模板路径,即
'DIRS': [BASE_DIR+"/templates",],
主要是为了能够让项目运行时,后端(views.py)根据settings.py设置找到模板路径,而templates就相当于前端,
在templates模板目录下,新建index.html文件,如果该文件中有需要去后端取值的变量,需要用使用{{}} 两个花括号括起来。
例如:
<html>
<h1>{{login}}</h1>
</html>
其中login就是变量,从后端的views.py中获取。


2.新建View

新建一个后端文件在容器目录,上面提到的views.py文件。
注:容器目录和项目目录区别需要注意,项目目录就是带有manage.py目录,而容器目录下有settings.py,urls.py文件等等的目录
代码如下:
from django.shortcuts import render
def login(request):
context = {}
context['login'] = 'Login Success'
return render(request, 'index.html', context)
其实views.py相当于MVC框架中的View,定义一个方法,赋值给变量,然后传给前端的模板文件index.html页面使用。


3.设置Controller

新建的项目中,在容器目录下有urls.py这个文件,这个文件相当于MVC框架中的Controller,
代码如下:
from django.conf.urls import url
from mysite.views import login
urlpatterns = [
url(r'^admin/', login),
]
调用mysite包中views.py 文件,并导入定义的login方法,通过正则的方式控制URL访问路径,
路径可随意填写,可以是一级目录,也可以是二级目录。


4.创建模型

在项目路径下新建个模型myapp,通过命令:django-admin.py startapp myapp
进行新建,新建完,便会在项目路径下出现一个myapp文件夹,该文件夹主要用来干嘛?说白了是与数据库交互的。
也就是MVC框架中的Model。创建它以后,需要修改容器中settings.py文件,找到DATABASES标记段,
修改成本地的mysql连接即可。(前提,还得进入mysql新建个django数据库。)
DATABASES修改如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django',
'USER': 'root',
'PASSWORD':'123123aa',
'HOST':'localhost',
'PORT':'',
}
}

还得在settings.py文件中添加一下模型的名称,找到INSTALLED_APPS标记段,并在结尾添加刚创建的模型名称myapp,如下:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp',
]

设置好settings.py文件以后,就去修改myapp目录下的models.py文件。
代码如下:
from django.db import models
class info(models.Model):
name=models.CharField(max_length=20)
代码的意思是导入django包中的db模块,引用db模块中的models方法,models方法找到刚刚设置的settings.py文件的DATABASES标识,进行数据库连接。
其中class类,info表示要在数据中新建的表名称,name表示字段,CharField相当于设置name字段数据类型为varchar,max_length相当于设置name字段长度为20个字符。
修改好models.py文件之后,就开始在项目目录下执行命令,让其在数据库中新建表和字段,命令如下:
python manage.py makemigrations  //这个命令表示,把刚刚修改的models.py文件的表和字段生成模型
python manage.py migrate        //这个命令表示,把刚刚生成的模型开始执行到数据库中,新建表和字段
如果你进数据库查看,你会发现,创建的表是有前缀的,类似myapp_info,这是因为django在执行时,会把模型名称作为前缀,后面才是表的名字。
注:django 1.7.1以下的版本执行新建数据的命令是不同,1.7.1以下版本的命令是python manage.py syncdb


5.数据库交互添加数据

在myapp模型文件夹下新建个submit.py 文件,主要用来向数据库插入数据。
代码如下:
# -*- coding: utf-8 -*-
from django.http import HttpResponse
from myapp.models import info
# 数据库操作
def add(request):
submit = info(name='Tester')
submit.save()
return HttpResponse("<p>数据添加成功!</p>")
导入myapp包中的models模块,引用模块中的info函数,就是第4步中修改的models.py文件的info函数。
定义一个add方法,向info表中的name字段插入Tester,然后保存,并返回数据添加成功消息。
此时,再修改一下Controller,即容器目录下的urls.py文件,
代码如下:
from django.conf.urls import url
from mysite.views import login
from myapp.submit import add
urlpatterns = [
url(r'^admin/', login),
url(r'^add/', add),
]
引用myapp包中的submit模块,导入submit模块的add函数,然后正则控制访问的URL路径,访问后,去数据库查看,就会发现,数据插入成功。


6.数据库交互查询数据

在myapp模型下新建一个search.py,
代码如下:
# -*- coding: utf-8 -*-
from django.http import HttpResponse
from myapp.models import info
# 数据库操作
def search(request):
# 初始化
response = ""
response1 = ""
# 通过objects这个模型管理器的all()获得所有数据行,相当于SQL中的SELECT * FROM
list = info.objects.all()
# filter相当于SQL中的WHERE,可设置条件过滤结果
response2 = info.objects.filter(id=1)
# 获取单个对象
response3 = info.objects.get(id=1)
# 限制返回的数据 相当于 SQL 中的 OFFSET 0 LIMIT 2;
info.objects.order_by('name')[0:2]
#数据排序
info.objects.order_by("id")
# 上面的方法可以连锁使用
info.objects.filter(name="Tester").order_by("id")
# 输出所有数据
for var in list:
response1 += var.name + " "
response = response1
return HttpResponse("" + response + "")

然后再修改一下容器目录下的urls.py文件,
from django.conf.urls import url
from mysite.views import login
from myapp.submit import add
from myapp.search import search
urlpatterns = [
url(r'^admin/', login),
url(r'^add/', add),
url(r'^search/', search),
]

访问一下,即可查询出数据。


7.更新和删除

更新和删除同上,新建一个文件,然后定义一个方法,再去修改一下urls.py即可
也可以把增删改查写进一个文件里,一样的用法
编写urls.py的时候,直接就写成from myapp.xxxx import *

//更新数据

# -*- coding: utf-8 -*-
from django.http import HttpResponse
from myapp.models import update

# 数据库操作
def update(request):
# 修改其中一个id=1的name字段,再save,相当于SQL中的UPDATE
test1 = info.objects.get(id=1)
test1.name = 'TestAAAA'
test1.save()

# 另外一种方式
#info.objects.filter(id=1).update(name='TestAAAA')

# 修改所有的列
# info.objects.all().update(name='TestAAAA')

return HttpResponse("<p>修改成功</p>")

 

 

//删除数据

 

# -*- coding: utf-8 -*-
from django.http import HttpResponse
from myapp.models import del
# 数据库操作
def update(request):
# 删除id=1的数据
test1 = info.objects.get(id=1)
test1.delete()

# 另外一种方式
# info.objects.filter(id=1).delete()

# 删除所有数据
# info.objects.all().delete()

return HttpResponse("<p>删除成功</p>")


 Django的模板和模型使用笔记 -|_|- End