
目录创建一个django项目1vscode安装 “python”扩展2创建一个 django项目了解目录创建app安装postgreSQL创建 demo_app model创建 demo_app views/urls/tempaltes创建全局 html文件Django 模板语法其他Django是一个高级的PythonWeb应用框架可以快速开发安全和可维护的网站。Django遵循一种称为MTV模型-模板-视图模式的架构模式。创建一个django项目1vscode安装 “python”扩展2创建一个 django项目# 新增一个文件夹 djangoDemo cd djangoDemo # 虚拟环境env python -m venv env #激活虚拟环境 .\env\Scripts\activate # 安装 django pip install django # 利用 django创建项目 django-admin startproject [项目名] # 运行开发服务 cd [项目名] python manage.py runserver 浏览器输入 http://127.0.0.1:8000/ 可以打开页面代表创建成功了解目录demo |----demon | |---- _pycache_ | |---- _init_.py // 表示这个目录属于python模块 | |---- asgi.py // 异步功能 | |---- settings.py // web服务器所需要的设置比较重要 | |---- urls.py | |---- wsgi.py |----demo_app | |---- _pycache_ | |---- migations // 数据库架构的一个记录 | |---- templates // 存放html文件 | |---- _init_.py // 表示这个目录属于python模块 | |---- admin.py // django 后台管理 | |---- apps.py // 不需要管 | |---- models.py // 数据库数据表相关 | |---- tests.py // 运行测试程序 | |---- views.py // 处理逻辑返回http response |----manage.py // 项目的根目录创建apppython manage.py startapp [app名称]在demosettings.py中添加我们新增的 app安装postgreSQL1安装postgreSQL数据库https://www.postgresql.org/并将bin目录添加到系统环境变量中2psycopg2 是一个用于 Python 的 PostgreSQL 数据库驱动程序。在使用 Django 中的 PostgreSQL 数据库前需要先安装 psycopg2pip install psycopg23, 在 settings.py中设置数据库配置DATABASES { default: { ENGINE: django.db.backends.postgresql, NAME: postgres, // 安装postgresql默认的数据库名称 USER: postgres, //安装postgresql默认的user名称 PASSWORD: 123456, // 应该是安装postgresql的时候自己设置的密码 HOST: localhost, PORT: 5432, } }在settings.py文件中完成postgreSQL数据库配置后需要以命令形式同步数据库在根目录下执行命令python manage.py makemigrationspython manage.py migrate创建 demo_app model# demo_project - urls.py 有个admin路径 浏览器输入http://127.0.0.1:8000/admin 打开一个后台登录页 # 创建一个管理员账户 python manage.py createsuperuser# demo_app - models.py 创建有个Todo数据表有2个字段namedue_date class Todo(models.Model): name models.CharField(max_length100) due_date models.DateField() // 对name做处理 def __str__(self): return self.name # demo_app - admin.py 讲models.py新增的Todo添加到后台管理页面中 from .models import Todo admin.site.register(Todo) # 同步数据库 python manage.py makemigrations python manage.py migrate创建 demo_app views/urls/tempaltes# demo_app - views.py # 处理逻辑返回 http response from django.http import HttpResponse def todo_list(request): return HttpResponse(todo list) # demo - urls.py urlpatterns [ path(, todo_list), # 在 根目录 路径下下使用 todo_list函数处理 ] 页面显示 “todo list”# demo_app - views.py from django.shortcuts import render def todo_list(request): return render(request, todo_list.html) # demo_app - templates 文件夹新建一个 todo_list.html html head titleTodo List/title /head body h1todo_list.html/h1 /body /html 页面显示 “todo_list.html”的内容创建全局 html文件1在项目的跟目录下 新建 templates 文件夹里面新增todo_list.html文件 html head titleTodo List/title /head body h1全局 todo_list.html/h1 /body /html 2demo - settings.py import os BASE_DIR Path(__file__).resolve().parent.parent # 获取当前文件所在目录 TEMPLATES [ { BACKEND: django.template.backends.django.DjangoTemplates, DIRS: [os.path.join(BASE_DIR, templates)], # 当前文件所在目录下的 templates 目录 APP_DIRS: True, OPTIONS: { context_processors: [ django.template.context_processors.request, django.contrib.auth.context_processors.auth, django.contrib.messages.context_processors.messages, ], }, }, ]Django 模板语法templates 文件夹里面存放 html文件可以在html文件显示response 返回的数据{% if condition %} # 条件判断 {% if not condition %} # 否定条件判断 {% for item in list %} # 循环遍历 {{ variable }} # 输出变量值 {% endif %}, {% endfor %} # 结束标签 例如 html head titleTodo List/title /head body {% if not request.user.is_authenticated %} h1您好{{request.user.username}}还未登录/h1 {% else %} h2{{request.user.username}}的Todo/h2 ul {% for todo in todo_list %} li{{ todo.name }},截至时间 {{todo.due_date}}/li {% endfor %} /ul {% endif %} /body /html其他# 用户对象特性 request.user.is_authenticated # 判断用户是否登录 返回 Boolean