DJango默认(sqlite3) 初识2

DJango默认(sqlite3) 初识2DJango默认(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’是添加模板的路径)