安装 Django
-
命令:
pip install Django
-
检验:
pythonimport djangodjango.get_version()
创建第一个项目
-
命令:
django-admin.py startproject projectName
创建完成后文件目录:
|-- projectName # 项目的容器。 | |-- __init__.py # 一个空文件,告诉 Python 该目录是一个 Python 包 | |-- settings.py # 该 Django 项目的设置/配置 | |-- urls.py # 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录" | `-- wsgi.py # 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目 `-- manage.py # 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互
启动服务器
-
用如下命令启动服务:
python manage.py runserver 0.0.0.0:8000
-
在浏览器端输入 http:\127.0.0.1:8000 ,得到 django 初始页面。
视图和 URL 配置
-
ge:
-
在项目文件夹下(E:/projectName/projectName)新建一个 view.py 文件
from django.http import HttpResponse def hello(request): return HttpResponse("Hello world ! ")
-
绑定 URL 与视图函数:打开 urls.py 文件,删除原来代码
from django.conf.urls import url from . import view urlpatterns = [ url() 可以接收四个参数 @ regex: 正则表达式,与之匹配的 URL 会执行对应的第二个参数 view。 @ view: 用于执行与正则表达式匹配的 URL 请求。 @ kwargs: 视图使用的字典类型的参数。 @ name: 用来反向获取 URL。 ``` url(r'^$', view.hello), ]
-
启动 Django 开发服务器,并在浏览器访问打开浏览器并访问 http:\127.0.0.1:8000
-
Django 模板
-
在 projectName 创建文件(templates),并建立 index.html 文件
输入代码
<h1>{{ hello }}</h1>
-
修改模板文件 settings.py 里 TEMPLATES 中的 DIRS 值为 [BASE_DIR+"/templates",]
...TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR+"/templates",], # 修改位置 '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', ], }, }, ]
-
修改 view.py
# -- coding: utf-8 -- # from django.http import HttpResponse from django.shortcuts import render def hello(request): context = {} context['hello'] = 'Hello World!' return render(request, 'hello.html', context)
-
访问 http://127.0.0.1:8000/index ,得到网页
这样我们就完成了数据与视图的分离
Django 模板标签
-
基本格式:
{% 关键字 %}
-
ge:
{% if condition1 %} ... display 1 {% elif condition2 %} ... display 2 {% else %} ... display 3 {% endif %}
{% for athlete in athlete_list %} <li>{{ athlete.name }}</li> {% endfor %} {% for athlete in athlete_list %} <h1>{{ athlete.name }}</h1> <ul> {% for sport in athlete.sports_played %} <li>{{ sport }}</li> {% endfor %} </ul> {% endfor %}
Django 模型
Django 对各种数据库提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。
-
步骤:
-
安装相应数据库驱动,如下以 mysql 为例
-
命令
pip install mysqlclient
pip install psycopg2
-
-
数据库配置,在项目setting.py 中找到 DATABASES 配置项,修改为:
# projectName/projectName/settings.py: 文件代码 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 或者使用 mysql.connector.django 'NAME': 'test', 'USER': 'test', 'PASSWORD': 'test123', 'HOST':'localhost', 'PORT':'3306', } }
-
定义模块:
Django规定,如果要使用模型,必须要创建一个app。我们使用以下命令创建一个 TestModel 的 app
-
在 projectName/ 下使用命令:
django-admin.py startapp TestModel
-
-
- 在models.py 文件中创建模型,如 ``` # projectName/model/models.py from django.db import models ''''' 类名代表了数据库表名 字段代表数据表中的字段(name) 数据类型 @ CharField(相当于varchar) @ DateField(相当于datetime) @ max_length 参数限定长度 ''''''' class Test(models.Model): name = models.CharField(max_length=20) ``` - 在settings.py中找到INSTALLED_APPS这一项,添加model ``` INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'TestModel', # 添加此项 ) ```
资源文件的加载
在 projectName/ 文件夹下建 static 文件,并在setting.py 中加入如下配置
# 静态文件 STATIC_URL = '/static/' STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)
最终项目结构如下:
|-- projectName |-- projectName # 项目的容器。 | |-- init.py # 一个空文件,告诉 Python 该目录是一个 Python 包 | |-- settings.py # 该 Django 项目的设置/配置 | |-- urls.py # 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录" | `-- wsgi.py # 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目 |-- model | |-- models.py # 与数据库表对应的model | |-- .... |-- templates | |-- html # html 视图文件 | |-- index.html # 平台首页 |-- static # js \ css \ img 等资源文件 `-- README.md # 项目文档 `-- manage.py # 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互