Django教程--持续更新中···
一 了解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:\python37\lib\site-packages\pytz-2019.3-py3.7.egg Finished processing dependencies for Django==3.0.3
配置环境变量,添加以下路径到系统环境变量path中:C:\Python37\Lib\site-packages\Django-3.0.3-py3.7.egg\django;
C:\Python37\Scripts。
使用命令检查
>>> 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 模板继承 模板可以用继承的方式来实现复用