美文网首页
Python学习笔记-Django篇

Python学习笔记-Django篇

作者: 陈yc | 来源:发表于2020-07-18 00:34 被阅读0次

    安装(mac)

    方法一:pip命令安装
    $ pip3 install Django
    

    指定版本:

    $ pip3 install Django==3.0.8
    
    方法二:下载源码安装

    下载地址:https://www.djangoproject.com/download/

    $ tar zxvf Django-3.0.8.tar.gz
    $ cd Django-3.0.8
    $ python3 setup.py install
    
    方法三:从github获取
    $ git clone https://github.com/django/django.git
    
    创建项目:

    网上:

    $ django-admin.py startproject djangoTest
    

    实际情况(mac):

    python3 /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/bin/django-admin.py startproject djangoTest
    
    启动服务:
    $ cd djangoTest
    $ python3 manage.py runserver
    或
    $ python3 manage.py runserver 127.0.0.1:8000
    
    项目目录:
    • djangoTest: 项目的容器。
    • manage.py: 命令行工具,以各种方式与该项目进行交互。
    • djangoTest/__init__.py: 空文件,表示一个 Python 包。
    • djangoTest/asgi.py: ASGI 兼容的 Web 服务器的入口,以便运行项目。
    • djangoTest/settings.py: 项目的配置文件。
    • djangoTest/urls.py: 项目的 URL 声明,网站"目录"。
    • djangoTest/wsgi.py: WSGI 兼容的 Web 服务器的入口,以便运行项目。

    路由配置

    配置文件:urls.py

    # urls.py
    from django.conf.urls import url
    from . import home as v_home # 视图
    
    url(r'^$', v_home.home)
    
    path、re_path、include方法
    • path函数语法:path(route, view, kwargs=None, name=None)
    • 正则表达式的规则一般用re_path方法实现
    • include方法用于导入其他模块的路由配置
    # urls.py
    from django.urls import include, re_path
    from . import home as v_home
    from . import admin as v_admin
    
    urlpatterns = [
        re_path(r'^$', v_home.home),
        re_path('admin/', v_admin.index, name='Tony'),
        re_path(r'^user/', include('djangoStudy.urls_user'))
    ]
    
    # urls_user.py
    from django.urls import re_path
    from . import user as v_user
    
    urlpatterns = [
        re_path(r'user/$', v_user.index, name='Tom')
    ]
    

    模板

    配置路径:
    1. 在项目根目录下创建 templates 目录
    2. 在setting.py文件,修改 TEMPLATES 中的 DIRS 为 [BASE_DIR+"/templates"]
    # setting.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',
                ],
            },
        },
    ]
    
    渲染模板:
    # home.py
    from django.shortcuts import render
    def home(request):
        context = {} # 上下文字典
        return render(request, 'home.html', context)
    
    # urls.py
    from django.urls import include, re_path
    from . import home as v_home
    
    urlpatterns = [
        re_path(r'^$', v_home.home),
    ]
    
    模板语法:

    home.py文件:

    # home.py
    from django.shortcuts import render
    import datetime
    
    
    def home(request):
        context = {
            'word': 'Hello home!',
            'list': ['aa', 'bb', 'cc', 'dd'],
            'dict': {
                'a': 11,
                'b': 22
            },
            'size': 3421,
            'time': datetime.datetime.now(),
            'link': '<a href=\'https://www.baidu.com/\' target=\'_blank\'>跳转</a>'
        }
        return render(request, 'home.html', context)
    

    templates/home.html文件:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>home</title>
    </head>
    <body>
    <p>[word]: {{word}}</p>
    <p>[list]: {{list}}</p>
    <p>[list.0|first|upper]: {{list.0|first|upper}}</p>
    <p>[dict.b]: {{dict.b}}</p>
    <p>[word|lower]: {{word|lower}}</p>
    <p>[word|truncatewords:"1"]: {{word|truncatewords:"1"}}</p>
    <p>[word|truncatechars:8]: {{word|truncatechars:8}}</p>
    <p>[word|length]: {{word|length}}</p>
    <p>[size|filesizeformat]: {{size|filesizeformat}}</p>
    <p>[time|date]:"Y-m-d": {{time|date:"Y-m-d"}}</p>
    <p>[link|safe]: {{link|safe}}</p>
    
    <p>[if判断]:</p>
    {% if size > 1000 %}
    <p>size > 1000</p>
    {% endif %}
    
    <p>[for循环]:</p>
    <ul>
        {% for l in list %}
        <li>{{ l }}</li>
        {% endfor %}
    </ul>
    
    <p>[for字典循环]:</p>
    <ul>
        {% for k,v in dict.items %}
        <li>({{ forloop.counter }}|{{ forloop.counter0}}|{{ forloop.revcounter }}|{{ forloop.revcounter0}}|{{ forloop.first}}|{{ forloop.last}}) {{ k }} : {{ v }}</li>
        {% endfor %}
    </ul>
    </body>
    </html>
    

    页面效果:


    image.png
    自定义语法:

    静态路径配置

    1. 在项目根目录下创建 statics 目录
    2. 在 settings.py添加以下配置:
    STATIC_URL = '/static/' # 路径别名
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, "statics"),
    ]
    

    相关文章

      网友评论

          本文标题:Python学习笔记-Django篇

          本文链接:https://www.haomeiwen.com/subject/skrcqktx.html