# 打开cmd
1. 安装virtualenv (windows操作系统)
pip install virtualenv virtualenvwrapper-win
2. workon查看虚拟环境
workon
3. mkvirtualenv创建新的虚拟环境
mkvirtualenv django1env
4. rmvirtualenv删除虚拟环境
rmvirtualenv django1env
5. 进入虚拟环境
workon django1env
pip install django==3.2.9(==3.2.9是指定版本, 如不写则会安装最新版本)
1. 测试Django是否安装成功
2. 进入python环境
import django
django.get_version()
进入到指定要存放项目的目录,执行 django-admin startproject HelloDjango 来创建一个名字为 HelloDjango 的工程
Django用于管理本项目的命令行工具,
之后进行站点运行,数据库自动生成等都是通过本文件完成
告诉python该目录是一个python包(暂无内容)
后期一些工具的初始化可能会用到
Django项目的配置文件,
默认状态其中定义了本项目引用的组件,项目名,数据库,静态资源等
维护项目的URL路由映射,
即定义当客户端访问时由哪个模块进行响应
定义WSGI的接口信息,
主要用于服务器集成,
通常本文件生成后无需改动
定义ASGI的接口信息,和WSGI类似,
在3.0以后新增ASGI, 相比WSGI,ASGI实现了异步处理
python manage.py runserver [ip:port]
可以直接进行服务运行 默认执行起来的端口是8000
1. 监听机器所有可用 ip(电脑可能有多个内网ip或多个外网ip):
python manage.py runserver 0.0.0.0:8000
2. 同时在settings.py中将
ALLOWED_HOSTS=['*']
3. 在其他局域网电脑上可以通过在浏览器输入 Django项目所在电脑的 IP:8000 来访问
迁移的概念: 就是将模型映射到数据库的过程
生成迁移文件: python manage.py makemigrations
执行迁移: python manage.py migrate
python manage.py startapp App
使用应用前需要将应用配置到项目中,在settings.py中将应用加入到INSTALLED_APPS选项中
其中暂无内容,使得app成为一个包
管理站点模型的声明文件,默认为空
应用信息定义文件,
在其中生成了AppConfig,
该类用于定义应用名等数据
添加模型层数据类文件
定义URL相应函数
自动生成,生成迁移文件的
测试代码文件
首先我们在views.py中建立一个路由响应函数
from django.http import HttpResponse
def welcome(request):
return HttpResponse('HelloDjango');
接着我们在urls中进行注册
path(r'hello/', hello, name='hello'),
path('app/', include('App.urls'))
path('app/', include(('App.urls', 'App'), namespace='App'))
urlpatterns = [
# django1.8, 2.0正则表达式写法:不再使用
# url(r'^index/$', index),
# Django2.0, 3.0写法: 常用
path(r'hello/', hello, name='hello'),
]
模板实际上就是我们用HTML写好的页面
创建模板文件夹templates, 在模板文件夹中创建模板文件
在views中去加载渲染模板, 使用render函数: return render(request,'xxx')
在models.py 中引入models
from django.db import models
1. 创建自己的模型类,但切记要继承自 models.Model
2. 案例驱动: 使用模型定义班级,并在模板上显示班级列表
班级table : grade
columns:
班级名称 - name
成立时间 - date
女生个数 - girlnum
男生个数 - boynum
是否删除 - is_delete
在admin.py中将model加入后台管理:
admin.site.register(Grade)
python manage.py createsuperuser
http://127.0.0.1:8000/admin/
def grade_list(request):
# 获取班级所有数据
g_list = Grade.objects.all()
return render(request, 'grade/grade_list.html', {'g_list': g_list})
{% for grade in g_list %}
{{ grade.sname }}
{% endfor %}
from django.conf.urls import url
from .views import grade_list
urlpatterns = [
path(r'grade/', grade_list),
]
path(r'/', include('grade.urls')),