Django教程--持续更新中···

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 模板继承
模板可以用继承的方式来实现复用

相关推荐