安装
- 系统环境安装
pip3 install Django
- 虚拟环境安装
py -m pip install Django
- 虚拟环境检查版本
py -m django --version
安装指定版本
-
后期希望获取补丁和改进
- 确保安装了Git
- 执行命令行
git clone https://github.com/django/django.git
- 激活
py -m pip install -e django\
- 更新Django源代码 diango目录下运行
git pull
-
虚拟环境
- 创建venv模块作为脚本运行目录
python -m venv tutorial-env
- 激活虚拟环境
tutorial-env\Scripts\activate
- 撤销一个虚拟环境
deactivate
- 创建venv模块作为脚本运行目录
-
查看pip安装(一下指令基于虚拟环境中)
- 更新包
python -m pip install --upgrade 包名
- 卸载包
python -m pip uninstall 包名
- 显示包详细信息
python -m pip show 包名
- 显示虚拟环境安装的包
python -m pip list
- 更新包
安装Apache和mod_wsgi
安装Apache
- 找到官方网站,找到需要版本安装
- 下载结束之后,解压到安装的指定位置
- 找到Apache文件夹的conf目录,找到httpd.conf文件
- 打开httpd.conf文件,修改ServerRoot指令的参数值(Apache的存放位置)
- 以管理员权限运行cmd,导航到apache的bin目录
- 执行指令
httpd -k install -n "Apache24"
- 启动apache服务
- 通过
localhost
或127.0.0.1
去访问,验证是否安装成功
安装WSGI
pip3 install mod_wsgi
- 如果遇到
MOD_WSGI_APACHE_ROOTDIR
报错,cmd设置apache的安装路径
创建一个Django项目
- 创建一个项目
django-admin startproject 项目名称
- 运行项目
py manage.py runserver
- 指定端口
py manage.py runserver 端口号
在项目中增加包
- 增加包
py manage.py startapp 包名
(如 polls) - 可以生成应用的基础目录结构
编写一个试图
- 在polls/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse('Hello, world. You\'re at the polls index.')
- 在polls/urls.py中
from django.urls import path
from . import views
urlpatterns = [
path("", views.index, name="index"),
]
- 在mysite/urls.py文件中的urlpatterns列表里插入一个include()
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
函数path()
- 函数**path()**具有四个参数,两个必须参数 route 和 view ,可选参数 kwargs 和 name
1.route
- route是一个匹配URL的准则,它会从urlpatterns的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项
2.view
- Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest 对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入
3.kwargs
- 任意个关键字参数可以作为一个字典传递给目标视图函数
4.name
- URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中
数据库配置
- Pyhon默认数据库SQLite,如需要使用其他后端数据库
1.数据库配置
- 编辑 mysite/settings.py 文件前,先设置 TIME_ZONE 为你自己时区(“Asia/Shanghai”)
- 打开mysite/setting.py文件,文件默认信息(DATABASE ‘default’)就是python默认数据库的支持
- 其中 ENGINE可选值
- django.db.backends.sqlite3
- django.bd.backends.postgresql
- django.db.backends.mysql
- django.db.backends.oracle
- 其他后端数据
- NAME 数据库的名称,NAME应该是此文件完整的绝对路径,包括文件名
- 默认值 BASE_DIR/‘db.sqlite3’ 将把数据库文件存储在项目的根目录
- 非默认数据库,还需配置USER\PASSWORD\HOST等等
- 以PostgreSQL为例
DATABASES = { "default": { "ENGINE": "django.db.backends.postgresql", "NAME": "mydatabase", "USER": "mydatabaseuser", "PASSWORD": "mypassword", "HOST": "127.0.0.1", "PORT": "5432", } }
2.INSTALLED_APPS
- 在mysite/setting.py文件中,INSTALLED_APPS设置项,包含了Django应用
- INSTALLED_APPS默认包含一下Django的自带应用
- django.contrib.admin – 管理员站点, 你很快就会使用它。
- django.contrib.auth – 认证授权系统。
- django.contrib.contenttypes – 内容类型框架。
- django.contrib.sessions – 会话框架。
- django.contrib.messages – 消息框架。
- django.contrib.staticfiles – 管理静态文件的框架。
- 默认开启的某些应用至少一个数据表,在使用它们之前需要在数据中创建一些表,执行一下命令
py manage.py migrate
3.创建模型
- 在 Django 里写一个数据库驱动的 Web 应用的第一步是定义模型 - 也就是数据库结构设计和附加的其它元数据
- 在polls/models.py文件中,定义模型
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
- 补充知识点:
- 每个字段都是Field类的实例,如CharField标识字符字段
- Field也能够接收多个参数,如default设置默认参数
- ForeignKey定义一个关系
- on_delete的参数有多种
- models.CASCDE 级联删除,也删除了还包含ForeignKey的对象
- models.PROTECT 阻止删除关联对象,除非没有相关关联的对象
- models.RESTRICT 阻止删除被引用的对象,被引用的对象也引用了在同一个操作中被删除的不同对象,通过CASCADE关系,则允许删除被引用的对象
- models.SET_NULL 设置ForeignKey为空;只有当null为True,才有可能
- models.SET_DEFAULT 设置为默认值;必须为ForeignKey设置一个默认值
- on_delete的参数有多种
激活模型
- polls应用安装到项目中,PollsConfig类些在文件 polls/apps.py中,它的点式路径是’polls.apps.PollsConfig’,添加到mysite/settings.py中的INSTALLED_APPS子项添加点式路径
- 执行指令
py manage.py makemigrations polls
- 通过运行makemigrations命令,Django会检测你对模型文件的修改
- 通过sqlmigrate命令接收以一个迁移的名称,返回对应的SQL
py manage.py sqlmigrate polls 0001
编辑models.py文件,改变模型
- 运行
python manage.py makemigrations
为模型的改变生成迁移文件 - 运行
python manage.py migrate
来应用数据库迁移