django项目开发的流程:
1.创建django的项目
2.创建应用
3.在setting.py 添加应用
4.创建模型类
5.在setting.py 设置DATABASE
6.项目__init__.py设置pymysql的设置
7.生成迁移文件
8.执行迁移
9.创建templates文件夹,模版的文件夹
10.在setting.py 设置模版的路径
在TEMPLATES=[]中,将‘DIRS’:[]添加
'DIRS': [os.path.join(BASE_DIR,'template')],——拼接路径
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
__file__:当前的文件
os.path:模块,对路径操作
abspath():返回一个绝对路径
D:\edu\python1802\20180503\code\demo0802_02\demo0802_01\ settings.py
dirname() :获取目录部分
D:\edu\python1802\20180503\code\demo0802_02\demo0802_01
dirname(‘D:\edu\python1802\20180503\code\demo0802_02\demo0802_01’)
结果:D:\edu\python1802\20180503\code\demo0802_02
BASE_DIR:项目根目录
join(dir1,dir2) 合并成一个新的目录
11.按照应用,在templates目录下创建子目录
在templates下创建子目录,目录名为应用名
12.创建模版文件(html)
创建html文件
已项目为例:创建两个html,一个为index.html,一个为details.html
index.html
<body>
<h1>图书列表</h1>
<ul>
{% for book in booklist %}
<li>
<a href="details/{{ book.id }}">{{ book.btitle }}</a>
</li>
{% endfor %}
</ul>
</body>
details.html
<body>
<h1>{{ book.btitle }}</h1>
<ul>
<!--book.heroinfo_set.all是求出所有英雄的信息-->
{% for hero in book.heroinfo_set.all %}
<li>{{ hero.hname}}----{{hero.hcentont}}</li>
{% endfor %}
</ul>
</body>
13.定义视图函数,处理客户端的请求
a.查询数据
b.加载模版
c.定义要插入上下文的字典数据
d.把数据插入模版,把渲染内容返回
在views.py文件定义函数
from django.shortcuts import render
from booktest.models import BookInfo
from django.template import loader
from django.http import HttpResponse
# Create your views here.
# 定义的函数必须要有一个参数request
# 加载首页
def index(request):
# 1.获取图书列表中所有的记录
booklist = BookInfo.objects.all()
# 2.加载模板
template = loader.get_template('booktest/index.html')
#3.定义要插入上下文的字典数据
context = {'booklist':booklist}
#4.把数据插入模板,把渲染内容返回
return HttpResponse(template.render(context))
# 加载图书的详细信息
def details(request,id):
# 1.查询只定的图书
book = BookInfo.objects.get(id=id)
# 2.加载模板
template = loader.get_template('booktest/details.html')
# 3.定义要插入上下文的字典数据
context = {'book': book}
# 4.把数据插入模板,把渲染内容返回
return HttpResponse(template.render(context))
14.urlconf的定义
首先,打开urls.py文件
from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from django.conf.urls import include
urlpatterns = [
path('admin/', admin.site.urls),
url('^',include('booktest.urls')),
]
先到这个文件匹配正则,booktest是应用名,然后再去booktest下面的urls找,所以需要在booktest下创建一个urls.py文件
打开应用名下面的urls.py文件修改
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$',views.index),
url(r'^details/(\d+)/$',views.details)
]
r'^details/(\d+)/$'匹配是以details开头,然后以数字结尾,因为这个项目最后是id,所以就是数字