Django 简单教程
阅读前注意
需要了解 Python 的基础
背景
官方github: github.com/django/djan…
Django是一个开放源代码的Web应用框架,由Python写成。
Django遵守BSD版权,初次发布于2005年7月, 并于2008年9月发布了第一个正式版本1.0 。
Django采用了MVC的软件设计模式,即模型M,视图V和控制器C。
安装
windows
1、Python 下载地址:www.python.org/downloads/
2、Django 下载地址:www.djangoproject.com/download/
详细环境配置请 Google
Mac安装
-
安装 python,会自动安装 pip
brew install -v python\@2 -
安装 Django
sudo pip install Django -
查看安装版本号
django-admin.py --version
来一个helloword
[注意] 这里的 django 的版本是1.6.11
-
创建
django-admin.py startproject HelloWorld -
运行
cd HelloWorld python manage.py runserver -
目录介绍
HelloWorld // 根目录 ├─manage.py //一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。 ├─HelloWorld //项目的容器。 | ├─__init__.py //一个空文件,告诉 Python 该目录是一个 Python 包。 | ├─settings.py //该 Django 项目的设置/配置 | ├─urls.py //该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。 | ├─wsgi.py //一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。
视图和 URL 配置
-
在先前创建的 HelloWorld 目录下的 HelloWorld 目录新建一个 views.py 文件,并输入代码:
from django.http import HttpResponse def hello(request): return HttpResponse("Hello world ! ") -
编辑 urls.py
from django.conf.urls import patterns, include, url from . import views # from django.contib import admin # admin.autodiscover() urlpatterns = patterns( '', # Examples: # url(r'^$', 'HelloWorld.views.home', name='home'), # url(r'^blog/', include('blog.urls')), # url(r'^admin/', include(admin.site.urls)), url('hello/?$', views.hello), )
path() 函数
Django path() 可以接收四个参数,分别是两个必选参数:route、view 和两个可选参数:kwargs、name。
语法格式:
path(route, view, kwargs=None, name=None)
- route: 字符串,表示 URL 规则,与之匹配的 URL 会执行对应的第二个参数 view。
- view: 用于执行与正则表达式匹配的 URL 请求。
- kwargs: 视图使用的字典类型的参数。
- name: 用来反向获取 URL。
url(路由) 函数
语法格式:
from django.conf.urls import url
urlpatterns = [
url(正则表达式, views视图,参数,别名),
]
-
正则表达式:一个正则表达式字符串
-
views视图: 一个可调用对象,通常为一个视图函数
-
参数 : 可选的要传给视图函数的默认参数(字典形式)
-
别名: 一个可选的name参数
Django 模板
在 HelloWorld 根目录底下创建 templates 目录并建立 hello.html 文件
-
编辑hello.html, 变量使用双括号
<h1>{{ hello }}</h1> -
接下来我们需要向Django说明模板文件的路径,修改HelloWorld/settings.py,修改 TEMPLATES 中的 DIRS 为 [BASE_DIR+"/templates",],如下所示:
TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates')] -
目录结构如下
HelloWorld ├─manage.py ├─templates | └hello.html ├─HelloWorld | ├─__init__.py | ├─__init__.pyc | ├─settings.py | ├─settings.pyc | ├─urls.py | ├─urls.pyc | ├─views.py | ├─views.pyc | ├─wsgi.py | └wsgi.pyc
Django 模板标签
if/else 标签
- 基本语法格式如下:
{% if condition1 %}
... display 1
{% elif condition2 %}
... display 2
{% else %}
... display 3
{% endif %}
- 根据条件判断是否输出。if/else 支持嵌套。
{% if %} 标签接受 and , or 或者 not 关键字来对多个变量做判断 ,或者对变量取反( not ),例如:
{% if athlete_list and coach_list %}
athletes 和 coaches 变量都是可用的。
{% endif %}
for 标签
{% for %} 允许我们在一个序列上迭代。
{% for athlete in athlete_list %}
<h1>{{ athlete.name }}</h1>
<ul>
{% for sport in athlete.sports_played %}
<li>{{ sport }}</li>
{% endfor %}
</ul>
{% endfor %}
ifequal/ifnotequal 标签
{% ifequal %} 标签比较两个值,当他们相等时,显示在 {% ifequal %} 和 {% endifequal %} 之中所有的值。
{% ifequal section 'sitenews' %}
<h1>Site News</h1>
{% else %}
<h1>No News Here</h1>
{% endifequal %}
注释标签
{# 这是一个注释 #}
过滤器
模板过滤器可以在变量被显示前修改它,过滤器使用管道字符,如下所示:
{{ name|lower }}
include 标签
{% include %} 标签允许在模板中包含其它的模板的内容。
{% include "nav.html" %}
模板继承
模板可以用继承的方式来实现复用。
<!DOCTYPE html>
<html>
<head>
<title>ddddddd</title>
</head>
<body>
<h1>Hello World!</h1>
<p>Django 测试。</p>
{% block mainbody %}
<p>original</p>
{% endblock %}
</body>
</html>
我们可以在 hello.html 进行继承
{%extends "base.html" %}
<h1>{{ hello }}</h1>
{% block mainbody %}
<h6>继承了 base.html 文件</h6>
{% endblock %}
最后的目录结构
HelloWorld
├─manage.py
├─templates
| ├─base.html
| └hello.html
├─HelloWorld
| ├─__init__.py
| ├─__init__.pyc
| ├─settings.py
| ├─settings.pyc
| ├─urls.py
| ├─urls.pyc
| ├─views.py
| ├─views.pyc
| ├─wsgi.py
| └wsgi.pyc