django是一个基于Python编写的Web框架
Django采用了MVT的设计模式(模型,视图,模板)(mvt设计模式是基于mvc设计模式的)
安装django
pip install django
检查是否安装成功
django-admin
django常用命令
startproject #创建django项目
startapp #创建django应用
check #检查校验项目完整性
runserver #本地运行django项目
shell # 进入django项目的shell环境(Python)
test # 执行django实例测试
makemigrations # 创建模型变更的迁移文件
migrate # 执行迁移文件
dumpdata # 数据库数据导出
loaddata # 文件数据导入数据库
创建第一个项目
django-admin startproject django_demo
settings.py是django项目的配置文件,urls.py是django项目的路由文件,wsgi.py是django作为wsgi应用的配置文件(wsgi,全成web server gateway interface,这个文件用来部署应用服务器),manage.py是django项目的管理文件,init.py是Django项目的包初始化文件
wsgi:Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。(来自百度百科)
运行django项目
python .\manage.py runserver 0.0.0.0:8000
访问127.0.0.1:8000
django应用
django应用和django项目的区别:django项目是基于django的web应用,可以独自运行,django应用是一个可复用(重用)的Python软件包
django项目下可以包含一组配置和n个django应用
创建django应用
python .\manage.py startapp django_app
admin.py #定义admin模块管理的配置文件
apps.py # 声明应用的配置文件
tests.py # 应用测试的配置文化
models.py #定义应用模型配置文件
views.py #视图处理配置文件
urls.py # 管理应用路由的配置文件,因为应用也可以管理路由,不过需要自己创建
django应用用法:
修改settings.py,找到INSTALLED_APP,添加"django_app"(用于挂载该应用),找到TEMPLATES下的DIRS,添加os.path.join(BASE_DIR, “templates”),(用于加载模板文件),找到ALLOWED_HOSTS,修改为ALLOWED_HOSTS = [’*’],(让外界可访问到后台站点)
django视图&django路由
简单配置一个路由来获取请求的数据
views.py
def hallo(request):
name = request.GET.get("name")
return HttpResponse('{}'.format(name))
项目的urls.py(在urlpatterns数组中添加,abc为路由)
path("abc/",include("django_app.urls"))
不要忘了导入include
from django.urls import path, include
在应用下新建一个urls.py
from django.urls import path, include
import django_app.views
urlpatterns = [
path("hallo",django_app.views.hallo)
]
上面例子中,访问/abc将触发一个应用级路由,该应用路由的返回值为该应用的views.py下的hallo函数
另外到settings.py中添加应用
INSTALLED_APPS数组下添加"django_app.apps.DjangoAppConfig"
应用名.apps.xxxConfig
xxxConfig可以到apps.py中找到
访问http://127.0.0.1:8000/abc/hallo?name=admin,可以看到输出了admin
模型层(位于视图层和数据库之间的组件)
模型层主要目的:Python对象和数据库表之间的转换,屏蔽不同的数据库的差异,提供更多的数据库工具(备份等等)
模型层字段定义
数字类型:IntegerField
文本类型:TextField
日期类型:DataTimeField
布尔类型:BooleanField
自增:AutoField
主键:primary_key属性
在settings.py中找到DATABASES,这是用来配置模型层和数据库的配置
另外需要到应用的models.py中定义模型
class demotest(models.Model):
demo_id = models.AutoField(primary_key=True)
title = models.TextField()
content = models.TextField()
demo_data = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
然后生成迁移文件,执行迁移文件,执行迁移文件后就是可以同步到数据库中
django shell(交互式编程,方便测试,方便开发,继承django项目环境)
启动django shell
python manage.py shell
测试一下刚才创建的模型
from django_app.models import Main
main = Main()
main.title = "test django"
main.content = "hallo word"
main.save()
datas = Tast.objects.all()
data = datas[0]
print(data.title)
Admin模块(管理)
主要用途:认证用户,显示管理模型,检查输入等等
创建管理员用户
python manage.py createsuperuser
会要求输入用户名和邮箱,以及密码
注册模型
admin.py
from .models import datas
admin.site.register(datas)
返回数据库中的数据
views.py
from django_app.models import datas
def data_content(request):
data = datas.objects.all()[0]
title = data.title
content = data.content
demo_id = data.demo_id
demo_data = data.demo_data
return_str = "title: %s, demo_id: %s, demo_data : %s, content: %s (title,demo_id,demo_data,content)"
return HttpResponse(return_str)
应用路由配置
path("data",django_app.views.data)
项目路由配置(如果已经配置转发到应用的路由,就不用再配置了)
模板系统
除了模板外,也可以直接上静态文件(html,css,JavaScript等等)
在应用目录下新建一个目录,templates,在该目录下新建一个html
当然使用模板系统更好更分别,毕竟逻辑和设计要分开
模板基础语法
变量:{{ data }} for循环:{% for data in datas %},{% endfor %} if判断:{% if %},{ % else % },{% endif %}
启用模板系统 views.py
def index_page(request):
all_data = datas.objects.all()
return render(request, "templates/index.html",{
"datas": all_data
})
pass
应用路由配置
path("index",django_app.views.ndex_page)
页面跳转