一 了解Django
- Django 是Python下最具有代表性的WEB框架;
- 是一个开放源代码的web应用框架,使用Python编写;
- 遵守BSD版权,初次发布于2005年7月,于2008年9月颁布正式版1.0;
- 采用了MVC的软件设计模式,模型M-视图V-控制器C。
二 Django 安装
2.1 准备
安装前需要安装Python开发环境,并配置好Python环境变量(修改系统变量path,添加加Python的安装路径);
Django1.6.x以上版本已经兼容Python3.x;
2.2 安装
2.2.1 windows 环境
下载Django压缩包;
解压后与Python安装目录放在同一个根目录,使用命令解压
tar xzvf Django-3.0.3.tar.gz
进入Django目录,执行命令
python setup.py install
Django将安装到Python的lib下的site-package;
···
Installed c:python37libsite-packagespytz-2019.3-py3.7.egg
Finished processing dependencies for Django==3.0.3
配置环境变量,添加以下路径到系统环境变量path中:C:Python37Libsite-packagesDjango-3.0.3-py3.7.eggdjango;
C:Python37Scripts。
使用命令检查
>>> import django
>>> django.get_version()
'3.0.3'
2.2.2 Linux环境
2.2.2.1 yum安装方法
命令 安装setuptools:
yum install python-setuptools
使用easy-install 命令安装django
easy-install django
检查安装:(python解释器中使用命令)
>>> import django
>>> django.VERSION
(1,6,5,'final',0)
2.2.2.2 pip安装方法
安装pip工具
参照 python pip安装使用
安装django
pip install Django
2.2.2.3 源码安装
下载源码包
安装
tar xzvf Django-X.Y.tar.gz #解压下载包
cd Django-X.Y #进入Django目录
python setup.py install #执行安装命令
2.2.3 Mac环境
下载最新稳定版本
进入下载目录,默认是/User/XXX/Downloads, XXX是用户名
$ tar zxvf Django-3.0.3.tar.gz
或者github 上下载
git clone https://github.com/django.git
进入解压后的目录,安装
cd Django-3.0.3
sudo python setup.py.install
2.3 创建Django项目
先进入站点目录,使用命令创建demodj1项目
$ django-admin.py startproject demodj1
启动服务
cd demodj1
$ python manage.py runserver
···
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
三 创建第一个项目
- Python3.7.4
- Django 3.0.3
3.1 Django管理工具
django-admin
3.2 创建项目
django-admin startproject HelloWorld
项目目录结构
cd helloworld
tree
.
|-- HelloWorld #项目的容器
| |-- __init__.py #一个空文件,告诉python该目录是要给python包
| |-- asgi.py #
| |-- settings.py #该项目的设置、配置
| |-- urls.py #该项目的url声明,一份有Djange驱动的网站目录
| `-- wsgi.py #一个WSGI兼容的web服务器的入口
`-- manage.py #使用的命令行工具
添加view.py
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello world ! ")
修改urls.py
from django.urls import path
from . import view
urlpatterns= [
path('hello/', view.hello),
]
打开http://127.0.0.1:8000/hello,显示正常。
3.3 path()函数
path(route, view, kwargs=None, name=None)
- route:必选参数,字符串,表示url的规则,匹配的url会执行对应的view
- view:必选参数,执行与正则表示式匹配的url请求
- kwargs:视图使用的字典类型的参数
- name:用来反向获取url
四 Django 模板
模板是一个文本,用于分离文档的表现形式和内容
4.1 模板应用
在HelloWorld项目中创建templates目录并建立hello.html
hello.html文件:(使用双大括号)
<h1>{{hello}}</h1>
修改settings.py文件
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
from django.shortcuts import render
def hello(request):
context={}
context['hello'] = 'Hello World!'
return render(request,'hello.html',context)
4.2 模板标签
4.2.1 if/else
基本语法格式
{% if condition %}
··· display
{% endif %}
# 或者
{% if condition1 %}
··· display1
{% elif condition2 %}
··· display2
{% else %}
··· display3
{% endif %}
- if/else支持嵌套
- {% if %} 接受and or not 关键字
4.2.2 for
{% for %} 允许在一个序列上迭代。
<ul>
{% for athlete in athlete_list %}
<li>{{ athlete.name }}</li>
{% endfor %}
</ul>
给标签增加一个reversed 使得该列表被反向迭代
{% for athlete in athlete_list reversed %}
···
{% endfor %}
可以嵌套使用{% for %} 标签
4.2.3 ifequal/ifnotequal 标签
比较两个值,user currentuser
{% ifequeal user currentuser %}
<h1>Welcome!</h1>
{% endifequal %}
支持 else 标签
{% ifequal section 'sitenews' %}
<h1>Site News</h1>
{% else %}
<h1>No News Here</h1>
{% endifequal %}
4.2.4 注释标签
{# #}
4.2.5 过滤器
{{ name|lower }}
4.2.6 include
允许在模板中包含其他的模板的内容
{% include "nav.html" %}
### 4.2.7 模板继承
模板可以用继承的方式来实现复用