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


    django.jpg

    一 了解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 模板继承
    模板可以用继承的方式来实现复用
  • 相关阅读:
    spring boot 整合elasticsearch
    elasticsearch 高级查询
    elasticsearch 基本操作
    day9--回顾
    day9--多线程与多进程
    day9--paramiko模块
    day10--异步IO数据库队列缓存
    数据库连接池
    数据库事务的四大特性以及事务的隔离级别
    使用JDBC进行数据库的事务操作(2)
  • 原文地址:https://www.cnblogs.com/liying-yds/p/12656298.html
Copyright © 2020-2023  润新知