本文主要记录了django框架几个应用的场景,主要操作均为入门操作,包括django的创建项目启动项目的指令,创建使用APP,视图和URL,数据库ORM,静态文件
创建和启动项目
pip install pipenv
pipenv shell
MVT模式:model view template model view template
pip install Django==2.2
pip list
创建django项目:
django-admin startproject class0
启动manage.py
python manage.py runserver
也可以指定端口:
python manage.py runserver 8080
APP创建
注册应用在settings内的INSTALLED_APPS内
app创建:创建应用 创建项目
python manage.py startapp book
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'book'
]
APP的视图与URL关联:
在urlpatterns上进行APP视图与URL的关联
book.views.py代码:
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
# return HttpResponse('首页')
# 向模板文件传递数据
context = {'title':'图书列表','list':range(10)}
# 返回模板文件的方式进行
# 查询所有图书的
return render(request,'booktest/index.html',context)
urls.py代码
from django.contrib import admin
from django.urls import path
from book import views
urlpatterns = [
path('admin/', admin.site.urls),
path('index/',views.index),
# views.index是views内定义的index函数
]
数据模板相关:
通过不操作数据库的方式,用ORM框架来创建:
sql 表 可以通过面向对象的方式,将sql表跟python中的类关联起来
ORM是一个转换,将创建sql的操作转换为python类的操作
先要在数据库内有一个表,在数据库内定义模型类,创建一张表
数据迁移:
生成迁移文件:
python manage.py makemigrations
执行迁移:
python manage.py migrate
视图函数:
view.py内定义视图内容,在urls.py内定义路由,需要在urls.py引入views,
from book import views,
urlpatterns 内定义:path 路由
urlpatterns = [
path('admin/', admin.site.urls),
path('index/',views.index),
# views.index是views内定义的index函数
]
静态文件/HTML为例
引用HTML文件,需要先定义一个template文件夹存储相关的静态文件,这里就叫模板,定义的位置在本文件夹下的template/,不同的APP使用不同的文件夹:但是template文件夹的位置需要告知框架,在settings上进行定义:
settings.py上有TEMPLATES列表,上定义
templates的DIRS字段定义
TEMPLATES = [
# 说明项目下的模板在哪个文件夹下找
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'template')],# 通过一个字符串拼接函数实现
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
定义模板之后,在views.py视图中进行使用,通过
def index(request):
return render(request,'booktest/index.html')
- 通过render的第三个参数传递HTML 文件使用的参数
def index(request):
# return HttpResponse('首页')
# 向模板文件传递数据
context = {'title':'图书列表','list':range(10)}
# 返回模板文件的方式进行
# 查询所有图书的
return render(request,'booktest/index.html',context)
HTML文件使用了context的参数,使用方式如下:这里使用了title和list两个参数,分别进行引用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>图书列</title>
</head>
<body>
<h1>首页</h1>
<h1>{{ title }}</h1>
{% for i in list %}
{{ i }}<br>
{% endfor %}
</body>
</html>