DJango默认(sqlite3) 初识2
关于django的逻辑导图
在django的一些基础配置创建完毕之后
以创建图书类和英雄类为例(一对多)
1.先在应用的models.py里,创建两个模型类(BookInfo,HeroInfo),
再分别给它们增加类属性(类属性就是数据库里的字段)
(创建完模型类之后,就得生成迁移文件python manage.py makemigrations,
再生成模型表python manage.py migrate
1.这时可以下载sudo pip install sqlite,在终端中输入sqliteman,可以查看当前数据表
2.可以进行交互来对数据表进行增删改查python manage.py shell(ctrl+d 退出)
3.后台管理,创建管理员权限
python manage.py createsuperuser
创建后再在应用中得admin.py 中去配置(本地化)
from django.contrib import admin from booktest.models import HeroInfo # Register your models here. # class BookInfoAdmin(admin.ModelAdmin): # '''模型后台管理类''' # pass admin.site.register(HeroInfo)
这样就可以在网站中
127.0.0.1:8000/admin
中对该数据表进行操作
)
2.然后在项目的urls.py 中增加
url(r'^', include('booktest.urls')), # 包含booktest应用的urls文件
3.由于应用层没有urls.py,所以我们自己创建,
再根据不同的浏览器的请求不一样创建不一样功能名称的正则式子,
来导向应用的views.py,找到相应的函数去执行
这个是应用层的urls.py的正则
from django.conf.urls import url from booktest import views urlpatterns = [ url(r'^index/$', views.index), # 图书信息页面 url(r'^create$', views.create), # 新增一本图书 url(r'^delete(\d+)$', views.delete), # 删除点击的图书
4.在应用的views.py中编写不同的功能函数
from django.shortcuts import render,redirect # 导入重定向函数 from booktest.models import BookInfo,AreaInfo from datetime import date from django.http import HttpResponse,HttpResponseRedirect # Create your views here. def index(request): '''显示图书信息''' # 1.查询出所有图书的信息 books = BookInfo.objects.all() # 2.使用模板5 return render(request, 'booktest/index.html', {'books':books}) def create(request): '''新增一本图书''' # 1.创建BookInfo对象 b = BookInfo() b.btitle = '流星蝴蝶剑' b.bpub_date = date(1990,1,1) # 2.保存进数据库 b.save() # 3.返回应答,让浏览器再访问/index,重定向 return HttpResponse('ok') # return HttpResponseRedirect('/index') # return redirect('/index') def delete(request, bid): '''删除点击的图书''' # 1.通过bid获取图书对象 book = BookInfo.objects.get(id=bid) # 2.删除 book.delete() # 3.重定向,让浏览器访问/index # return HttpResponseRedirect('/index') return redirect('/index')
其中的
return redirect('/index')
是一个重定向的功能
4.但浏览器需要html页面时,需要在应用中创建一个trmplates模板,
在模板中再创建一个与应用名称相同的文件夹,里面用来存储相关的html文件
(用使用模板时候需要在项目的shtting.py中的
TEMPLATES 的
'DIRS': [os.path.join(BASE_DIR, 'templates')], # 设置模板目录
os.path.join(BASE DIR,‘templates’是添加模板的路径)
)